Android: планирование перезапуска сбойного сервиса с ОГРОМНОЙ задержкой?

У меня запущена служба, которую ОС убивает - проблема в том, что когда она убивает ее и планирует перезапуск, она запланирована на перезапуск через час. Эта служба поддерживает два приемника для изменений соединения 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 работать? (Поэтому, когда моя основная деятельность очищена, я больше не могу перезапустить службу без повторного открытия основной операции?), Или что-то еще происходит?

Ответы на вопрос(1)

Ваш ответ на вопрос