我的应用程序中有一个自定义的BroadcastReceiver,用于在网络连接发生变化时接收意图。但是出于某种原因,只要连接发生变化,它就会运行两次,我不知道为什么。
如何解决这个问题,以便只在网络更改时触发一次?
注意: 不,它不在清单中两次。
谢谢!
修改 这是接收者代码:
public class NetworkStateReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Do stuff; This is running twice!
}
}
这是清单中的一点:
<receiver android:name="NetworkStateReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
答案 0 :(得分:0)
接收多个广播是设备特定的问题。有些手机只发送一个广播而另一个发送2或3.但是有一个解决方法:
假设你在wifi断开连接时收到断开连接的消息,我猜第一个是正确的,另外两个只是由于某种原因的回声。
要知道消息已被调用,你可以有一个静态布尔值,它在connect和disconnect之间切换,只在你收到一个连接并且boolean为true时调用你的子例程。就像是: 公共类ConnectionChangeReceiver扩展BroadcastReceiver { private static boolean firstConnect = true;
@Override
public void onReceive(Context context, Intent intent) {
final ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
final NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
if (activeNetInfo != null) {
if(firstConnect) {
// do subroutines here
firstConnect = false;
}
}
else {
firstConnect= true;
}
}
}