我在這我想檢測WHEN Internet連接出現,當它消失的應用程序。問題的理解廣播接收機
此刻,當它出現時,我開始它我的應用程序連接到遠程服務器一個新的線程(從UI不同)。
爲此,我很難嘗試實現一個廣播接收器,它可以連接,但我在理解這個概念時遇到了問題。
在我onCreate()
我有somethig這樣的:
onCreate()
{
cThread = new Thread(new ClientThread(syncToken));
cThread.start();
}
當有連接到互聯網,我通過套接字發送數據時,會有不,我存儲在數據庫中的數據。當互聯網出現時,我正在重新啓動我的線程以重新連接併發送舊數據(因網絡崩潰而未發送)和新數據。
比方說,我想實現這樣的事情:
DoRefreshBroadcastReceiver refreshBroadcastReceiver;
...
onResume() {
// register the refreshing complete broadcast receiver
IntentFilter intentFilter = new IntentFilter(DO_REFRESH);
refreshBroadcastReceiver = new doRefreshBroadcastReceiver();
registerReceiver(refreshBroadcastReceiver, intentFilter);
}
public class DoRefreshBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// call method to run fetch code...
}
}
這是否意味着當檢測到Internet連接時,我的onReceive()
被調用?我可以在那裏開始我的線程?
什麼是使用意圖的概念?因爲我真的不明白。如何使用它,以及它的目的是什麼?
想法:我真的不知道如何在這種情況下使用這個意圖或如何在我的應用程序中使用它!
請問這個東西檢測對Internet的連接,甚至當我在這個活動我不?
編輯:
這裏是我的onReceive看起來像:
onCreate()
{
cThread = new Thread(new ClientThread(syncToken));
// cThread.start();
connIntentFilter = new IntentFilter(
"android.net.conn.CONNECTIVITY_CHANGE");
connListener = new MyConnectivityListener();
}
public void onReceive(Context context, Intent intent)
{
mNetworkInfo = (NetworkInfo) intent
.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
if (mNetworkInfo != null && mNetworkInfo.isConnected())
{
/*
* if(mNetworkInfo.getType()==ConnectivityManager.TYPE_WIFI);
*
*
* else
*/
cThread.start();
}
else {
System.out.println("There is no internet connection!");
try {
cThread.stop();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
mNetworkInfo != null && mNetworkInfo.isConnected()
這是否意味着它的連接,或者我應該驗證某種類型的仿真器連接的?
*我認爲,我應該直接啓動我的線程onReceive()
。一旦我的應用程序啓動它檢測到互聯網連接和BroadcastReceiver
被解僱,不是嗎?
我要求太多? – adrian 2011-06-04 20:45:58