如何处理BroadcastReceiver会话

时间:2015-11-23 11:29:43

标签: android android-activity broadcastreceiver connectivity

我有一个在大约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

0 个答案:

没有答案