簡體   English   中英

在Android網絡偵聽器的BroadcastReceiver中兩次調用onReceive

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM