У меня ошибка, когда я регистрирую широковещательный приемник в конструкторе. Однако, когда я регистрирую его в , он выдает исключение из-за отсутствия регистрации. Как это может быть и вы можете помочь мне решить проблему.Радиовещательный приемник не зарегистрирован
Основная проблема заключается в том, что я связан с классом NetworkService
, от которого я также не могу отвязать. Это вызывает проблемы, когда я перезапускаю приложение и говорю, что у меня есть «утечка». Но я не знаю, какая из двух проблем порождает утечку.
Вот мой код:
Константы
private static NetworkService networkService;
private ServiceConnection networkServiceConnection;
private BroadcastReceiver networkServiceMessageReceiver;
private boolean boundToService;
OnCreate
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
/** Defines callbacks for service binding, passed to bindService() */
networkServiceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName componentName, IBinder service) {
NetworkService.LocalBinder binder = (NetworkService.LocalBinder) service;
networkService = binder.getService();
boundToService = true;
LocalBroadcastManager.getInstance(SplashActivity.this).registerReceiver(networkServiceMessageReceiver, new IntentFilter(NetworkService.CHECK_FOR_UPDATE_RESULT));
checkForUpdate();
}
@Override
public void onServiceDisconnected(ComponentName componentName) {
boundToService = false;
}
};
}
OnResume
@Override
protected void onResume() {
super.onResume();
//Bind to NetworkService
if(!boundToService)
{
Intent intent = new Intent(this, NetworkService.class);
bindService(intent, networkServiceConnection, Context.BIND_AUTO_CREATE);
}
}
OnPause
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(networkServiceMessageReceiver);
}
OnStop
@Override
protected void onStop() {
super.onStop();
unbindService(networkServiceConnection);
}
сделать регистрацию/отмену регистрации парами: создать/уничтожить или запустить/остановить или возобновить/приостановить – pskink
Итак, если я зарегистрирую i в onCreate, я должен отменить регистрацию в onDestroy? – Sulby
да, но его лучше сузить жизненный цикл, чтобы начать/остановить или даже возобновить/приостановить – pskink