想监听手机网络变化,已在AndroidManifest中注册<intent-filter>,
<receiver android:name=".receiver.NetworkStateReceiver">
<intent-filter>
<action android:name="android.net.wifi.STATE_CHANGE"/>
</intent-filter>
</receiver>
但是在android studio中可以看到,应用进程在后台被系统自动终结后,就再也不能收到网络变化的广播了,这是怎么回事?
我针对三个action做了测试:
其中前2个很诡异,有时候甚至收不到,即使app仍在前台。有时候甚至一次收到好几个:
只有第3个很正常,手机上的wifi图标亮、灭的同时,就可以在logcat中看到我在
onReceive
中打印的消息,杀掉后仍可以收到。这是stackoverflow上的一个回答:android.net.wifi.STATE_CHANGE: not triggered on Wifi disconnect
这个回答建议用
SUPPLICANT_CONNECTION_CHANGE_ACTION
代替STATE_CHANGE
,来检查wifi的连接状态。不过这个回答也没有给出收不到broadcast的解释。