У меня запущена служба, которую ОС убивает - проблема в том, что когда она убивает ее и планирует перезапуск, она запланирована на перезапуск через час.Эта служба поддерживает два приемника для изменений соединения Bluetooth, поэтому мне нужно перезапускать намного быстрее, а не сидеть в состоянии «Перезапуск» более часа.
Вот отрывок из журнала:
I/ActivityManager( 1064): No longer want com.deadbeat.bta (pid 25455): hidden #17
W/ActivityManager( 1064): Scheduling restart of crashed service com.deadbeat.bta/com.deadbeat.btalib.BTService in 3600210ms`
По истечении этих 3600 секунд он просто убьет его и снова перенесет на 2 часа, и так далее.Когда это происходит, кажется, что onDestroy (), onCreate () и onStartCommand () не вызываются.Запуск основного действия успешно перезапустит службу, и все будет в порядке в течение нескольких часов, пока это не произойдет снова.
Это началось, когда я внес изменение, которое требует, чтобы я передал дополнительные функции при запуске службы,
Вот мои onStartCommand и onCreate, если это поможет ...
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d("BTA", ">>> onStartCommand()");
setIntent(intent);
Bundle extras = getIntent().getExtras();
if (extras != null) {
setGlobals((Globals) extras.getSerializable("Globals"));
}
if (getGlobals() == null) {
Log.e("BTA", "!!! Call an ambulance!!");
}
Log.i(getGlobals().getLogPrefix(), ">>> Service starting up");
setWorker(new BTAWorker(this, getGlobals()));
getWorker().doLog("Service Worker Set and Active");
return START_REDELIVER_INTENT;
}
@Override
public void onCreate() {
// Create
super.onCreate();
Log.d("BTA", ">>> onCreate()");
// Register BroadcastReceiver with connect and disconnect actions
IntentFilter intentToReceiveFilter = new IntentFilter();
intentToReceiveFilter.addAction("android.bluetooth.device.action.ACL_CONNECTED");
intentToReceiveFilter.addAction("android.bluetooth.device.action.ACL_DISCONNECTED");
registerReceiver(this.mIntentReceiver, intentToReceiveFilter, null, this.mHandler);
Log.d("BTA", ">>> Bluetooth State Receiver registered");
Log.d("BTA", ">>> Intent = " + getIntent());
}
Буду очень признателен за любые советы относительно того, что я делаю неправильно.Я искал, но не нашел ничего похожего на эту долгую задержку перезапуска.Должна ли родительская активность быть активной, чтобы START_REDELIVER_INTENT
работал?(Поэтому, когда моя основная деятельность очищена, я больше не могу перезапустить службу без повторного открытия основной операции?) Или что-то еще происходит?