在onStart()中注册时,网络广播接收器调用如何避免这种情况?

时间:2018-12-01 15:07:46

标签: android broadcastreceiver

我将以下基本活动包括在内。我需要在处于前台状态的整个应用程序中监听网络变化。因此,为此,我将在基本活动的onStart()中注册广播接收器,并在onStop()中取消注册。但是,每当新创建一个活动时,就会调用此onStart()方法并在广播接收机onReceive()当时正在注册广播接收机,这就是仅在网络发生变化时才必须调用的问题。我已在清单文件中包含以下内容:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

以下是我的基本活动:

public class BaseActivity extends Activity {

private final IntentFilter networkIntentFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);

private BroadcastReceiver reciever = new BroadcastReceiver(){
    @Override
    public void onReceive(Context context, Intent intent) {
       // necessary code
    }    
};

@Override
public void onCreate(Bundle state) {
    setContentView(R.layout.....);
}

@Override
public void onStart() {
    registerReceiver(reciever , networkIntentFilter);
}

@Override
public void onStop() {
    unregisterReceiver(reciever);
}

}

0 个答案:

没有答案