【发布时间】:2014-08-14 10:21:21
【问题描述】:
我正在尝试检测我的 android 应用程序中的网络状态变化。我按照那个问题的答案:Check INTENT internet connection
这可行,但广播接收器需要时间来检测更改。当我打开或关闭 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 的应用标签中:
<receiver android:name="com.mypackage.NetworkStateReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
【问题讨论】:
-
我认为您需要检查互联网连接的可用性,对吗?还是 wifi 连接可用性?
-
@user2851150 我需要检查互联网连接的可用性,无论是 wifi 还是 3g