我试图在我的Android应用程序中检测网络状态更改.我按照那个问题的答案:检查INTENT互联网连接
这有效,但广播接收者需要时间来检测变化.当我打开或关闭wifi时,大约10秒后调用onReceive()方法.为什么花这么多时间?有人可以帮忙吗?
谢谢
这是我的代码:
public class NetworkStateReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.d("app", "Network connectivity change"); if (intent.getExtras() != null) { NetworkInfo ni = (NetworkInfo) intent.getExtras().get( ConnectivityManager.EXTRA_NETWORK_INFO); if (ni != null && ni.getState() == NetworkInfo.State.CONNECTED) { Log.i("app", "Network " + ni.getTypeName() + " connected"); Toast.makeText(context, "CONNECTED", Toast.LENGTH_LONG).show(); } else if (intent.getBooleanExtra( ConnectivityManager.EXTRA_NO_CONNECTIVITY, Boolean.FALSE)) { Toast.makeText(context, "DISCONNECTED", Toast.LENGTH_LONG).show(); Log.d("app", "There's no network connectivity"); } } } }
在我的Manifest的应用程序标签中:
yrazlik.. 6
我找到了解决方案.
我没有扩展BroadcastReceiver类并创建NetworkStateChangeReceiver,而是在我的活动上创建了一个broadcastreceiver并在那里注册了它.现在它工作,并立即触发onReceive()方法.
我找到了解决方案.
我没有扩展BroadcastReceiver类并创建NetworkStateChangeReceiver,而是在我的活动上创建了一个broadcastreceiver并在那里注册了它.现在它工作,并立即触发onReceive()方法.