BroadcastReceiver получает несколько идентичных сообщений для одного события

Я зарегистрировал приемник, который прослушивает сетевые события:

<receiver 
    android:label="NetworkConnection"
    android:name=".ConnectionChangeReceiver" >
    <intent-filter >
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
</receiver>

приемник тоже очень простой:

public class ConnectionChangeReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
        if (activeNetInfo != null) {
                Log.v("@@@","Receiver : " + activeNetInfo);
        } else {
            Log.v("@@@","Receiver : " + "No network");
        }
    }
}

Проблема в том, когда подключен Wi-Fi Я получаю 3 одинаковых сообщения подряд, например:

Receiver : NetworkInfo: type: WIFI[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: (none), roaming: false, failover: false, isAvailable: true
Receiver : NetworkInfo: type: WIFI[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: (none), roaming: false, failover: false, isAvailable: true
Receiver : NetworkInfo: type: WIFI[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: (none), roaming: false, failover: false, isAvailable: true

Все они «ПОДКЛЮЧЕНЫ / СОЕДИНЕНЫ» (разве это не должно быть что-то вроде CONNECTING / OBTAINING_IPADDR и т. Д.), Поэтому проблема в том, как определить, когда это действительно связаны? У меня есть несколько процедур, которые я хочу сделать, когда Wi-Fi действительно подключен, и я не хочу, чтобы они вызывались три раза подряд.

PS: 3G отправляет только одно сообщение, так что здесь нет проблем.

Обновление:

Похоже, это проблема конкретного устройства.

Для теста я взял 2 Desire HD и 4 случайных телефона Android (разные модели Aquos и кое-что безымянное китайское). И на DHD, и на одном случайном телефоне с подключением к Wi-Fi я получил 3 сообщения, на остальных телефонах я получил только одно сообщение. Черт возьми.

33
задан Sver 7 December 2011 в 09:55
поделиться