我有一个在大约5个屏幕(活动)上使用网络的应用程序,我想在设备丢失互联网连接时显示Toast消息。我创建了一个BroadcastReceiver类来监听网络状态的变化,并相应地显示toast:
public class ConnectivityReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equalsIgnoreCase("android.net.conn.CONNECTIVITY_CHANGE")) {
if (!Util.isInternetAvailable())
Toast.makeText(context, "Connection lost!", Toast.LENGTH_LONG).show();
}
}
}
我正在努力解决的是如何处理接收器的会话。即何时注册以及何时注销。我尝试了显而易见的,将我的主要活动的 onCreate 注册并取消注册 onDestroy 。这个问题是,即使应用程序在后台运行,接收器仍然会注册(因为 onDestroy 仅在您杀死应用程序时被调用)。或者,取消注册 onPause 将导致接收器在切换活动时不处于活动状态。有没有更好的方法来处理这个问题,而不仅仅是注册每个活动的接收器 onResume 并取消注册 onPause ?