![](/img/trans.png)
[英]Android BroadcastReceiver onReceive() called twice on android 4.0
[英]onReceive called twice in BroadcastReceiver for Network Listener in android
為什么在網絡狀態更改時,接收兩次被調用。
表現:
<receiver android:name="tv.meterreading.network.NetworkChangeReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" >
</action>
</intent-filter>
</receiver>
接收多個廣播是設備特定的問題。 有些電話僅發送一個廣播,而其他電話發送2或3。但是有一種解決方法:
假設當wifi斷開連接時收到斷開連接消息,我想第一個是正確的,而其他兩個只是出於某種原因的回聲。
要知道消息已被調用,您可以有一個靜態布爾值,該布爾值可在connect和斷開連接之間切換,並且僅在收到連接且布爾值為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;
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.