Android 如何处理BroadcastReceiver会话

Android 如何处理BroadcastReceiver会话,android,android-activity,broadcastreceiver,connectivity,Android,Android Activity,Broadcastreceiver,Connectivity,我有一个在大约5个屏幕(活动)上使用网络的应用程序,我想在设备失去互联网连接时显示一条Toast消息。我创建了一个BroadcastReceiver类来监听网络状态的变化,并相应地显示toast: public class ConnectivityReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (in

我有一个在大约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();
        }
    }
}

我正在努力解决的是如何为接收者处理会话。i、 e何时注册和何时取消注册。我尝试了显而易见的方法,在创建我的主要活动时注册它,然后取消注册它。这样做的问题是,即使应用程序在后台运行,接收器仍会被注册(因为只有在您关闭应用程序时,onDestroy才会被调用)。或者,在暂停时取消注册它将导致在我切换活动时接收器不处于活动状态。有没有更好的方法来处理这个问题,而不是简单地在恢复时注册每个活动的接收者,然后在暂停时注销它?

为什么你不想在你的应用程序处于后台时注册它?这会使Toast在运行其他应用程序时也会响。如果我的应用程序在后台,并且用户失去连接,则即使我在应用程序之外,也会显示Toast。