我在这我想检测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