【发布时间】:2017-03-29 23:44:07
【问题描述】:
我有一个BroadcastReceiver 检查静态声明为的网络连接:
<receiver
android:name=".core.util.NetworkChangeReceiver"
android:label="NetworkChangeReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
</intent-filter>
</receiver>
网络更改接收器执行以下操作:
public class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
String status = NetworkUtil.getConnectivityStatusString(context);
if(status == "Not connected to Internet") {
Intent i = new Intent(context, Dialog.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
}
问题是当我手动终止我的应用程序并关闭网络(飞行模式)时,对话活动启动。这怎么可能?我的广播接收器在后台还活着吗?
问题:
一旦应用程序被杀死,我有没有办法取消注册我的广播接收器?也许在Android的应用程序单例类中?
如果在 Application 类中不可能,我是否必须在 onStop() 的任何地方手动取消注册它?并在每个活动中注册onStart()?
【问题讨论】:
标签: java android android-studio service broadcastreceiver