gpt4 book ai didi

android - 广播接收器调用了两次

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:47:34 44 4
gpt4 key购买 nike

尝试在我的应用程序中检查互联网连接。我的 list 有一个代码:

    <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<receiver android:name=".MyReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>

还有一个句柄类:

public class MyReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction() != null && intent.getAction().equals("android.net.conn.CONNECTIVITY_CHANGE"));
{
Log.d("myLogs", "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("myLogs", "Network " + ni.getTypeName() + " connected");
}
}
if (intent.getExtras().getBoolean(
ConnectivityManager.EXTRA_NO_CONNECTIVITY, Boolean.FALSE)) {
Log.d("myLogs", "There's no network connectivity");
}
}
}

在我的 Logcat 中,我得到如下图片:

04-11 23:24:48.021: D/myLogs(10261): Network connectivity change
04-11 23:24:48.021: I/myLogs(10261): Network WIFI connected
04-11 23:24:48.202: D/myLogs(10261): Network connectivity change
04-11 23:24:48.202: I/myLogs(10261): Network WIFI connected

因此,接收器调用了两次。为什么?所有类型的连接都存在一些问题。

最佳答案

您可能还需要通过检查接收器中的 isStickyBroadcast 来检查收到的 Intent 是否是 Sticky 事件之一。如果那是真的,那么您可以忽略它并继续。接收器一注册,您就会收到粘性广播。

http://developer.android.com/reference/android/content/BroadcastReceiver.html#isInitialStickyBroadcast%28%29

关于android - 广播接收器调用了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15958284/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com