Andróide: Agendamento da reinicialização do serviço com falha com ENORME atraso?

Tenho um serviço em execução que o sistema operacional está matando - o problema é que, quando o mata e programa a reinicialização, está sendo programado para reiniciar mais de uma hora depois. Este serviço mantém dois receptores para alterações na conexão bluetooth, e é por isso que preciso reiniciar muito mais rapidamente, em vez de ficar no estado "Reiniciando" por mais de uma hora.

Aqui está um trecho do log:

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`

Após esse período de 3600 segundos, ele simplesmente será eliminado e reagendado novamente por 2 horas depois, e assim por diante. Quando isso acontece, parece que onDestroy (), onCreate () e onStartCommand () não estão sendo chamados. Iniciar a atividade principal reiniciará o serviço com êxito e tudo ficará bem por algumas horas até que isso comece a acontecer novamente.

Isso começou a acontecer quando eu fiz uma alteração que exige que eu passe extras quando o serviço for iniciad

Aqui está meu onStartCommand e onCreate se isso ajudar ...

@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());
}

Qualquer conselho sobre o que estou fazendo de errado seria muito apreciado. Eu procurei, mas não encontrei nada que pareça estar relacionado a esse longo atraso na reinicialização. A atividade pai precisa estar ativa paraSTART_REDELIVER_INTENT trabalhar? (Portanto, quando minha atividade principal é limpa, não consigo mais reiniciar o serviço sem reabrir a atividade principal?) Ou está acontecendo outra coisa?

questionAnswers(1)

yourAnswerToTheQuestion