На Android 7, я знаю, что я должен зарегистрировать CONNECTIVITY_ACTION
приемник программно, а не в явнойCONNECTIVITY_ACTION приемник выключается в момент зарегистрировать его
приемник выключается в тот момент, я зарегистрировать его. Как я могу это предотвратить?
в моем классе приложения я делаю это:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
IntentFilter filter = new IntentFilter();
filter.addAction(android.net.ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(new NetworkUpdateReceiver(), filter);
}
, а затем метод onReceive
называется сразу:
public class NetworkUpdateReceiver extends BroadcastReceiver {
private Context context;
@Override
public void onReceive(Context context, Intent intent) {
this.context = context;
Log.e("NetworkUpdateReceiver", "onReceive");
После того, что он работает нормально - я получаю вызов метода каждый раз, когда в сеть включена или выключена
Это, вероятно, липкая трансляция. Не так много можно сделать по этому поводу. – CommonsWare
Из любопытства, в чем проблема с этим немедленно уволить? Независимо от того, что делает ваш обработчик, все равно нужно обрабатывать событие так же, будь то сейчас или позже. Это не так просто, как переключение туда и обратно ... если это то, что вы делаете с ним. –
Проблема в том, что приложение выполняет серию событий всякий раз, когда становится доступной сеть, что происходит позже, но не каждый раз, когда приложение загружается в память. Мне показалось, что было бы легче предотвратить его отключение каждый раз, вместо того чтобы внедрять логику обхода –