2016-09-10 19 views
1

私はサービスをアンドロイドでいくつかのタスクに使用しています。 しかし、私はアンドロイド携帯電話のRAMをクリアすると私のサービスが殺され、再起動しない。 私はSTART_STICKYが問題を解決することを示唆するいくつかの記事を読んだが、それは起こっていない。サービスがアンドロイドで再起動しない

以下は私のコードonStartCommandです。返信はSTART_STICKYです。この状況でもonDestroyが呼び出されていません。

public int onStartCommand(Intent intent, int flags, int start_Id) { 
    return START_STICKY; 
} 
+0

OSがサービスをシャットダウンすると再起動します。そうでない場合は、 – pskink

+0

あなたはどのバージョンのAndroidを使用していますか? – JoxTraex

+0

APIレベル24を使用しています – tarun

答えて

0

強制終了したサービスを再起動するようにしてください。

注:このサービスを他の場所からも停止している場合は、サービスを再開します。そのため、サービスを停止するか、強制的に停止したかをチェックする必要があります。 自分でサービスを停止する場合は、サービスの停止状態の種類[共有ではない]を[共有ではない]に保存し、その状態チェックを使用して再起動しないでください。

@Override 
    public void onTaskRemoved(Intent rootIntent){ 
     Intent restartServiceIntent = new Intent(getApplicationContext(), this.getClass()); 
     restartServiceIntent.setPackage(getPackageName()); 

     PendingIntent restartServicePendingIntent = PendingIntent.getService(getApplicationContext(), 1, restartServiceIntent, PendingIntent.FLAG_ONE_SHOT); 
     AlarmManager alarmService = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE); 
     alarmService.set(
       AlarmManager.ELAPSED_REALTIME, 
       SystemClock.elapsedRealtime() + 5000, 
       restartServicePendingIntent); 

     super.onTaskRemoved(rootIntent); 
    } 
+0

このコードは私のためには機能しませんでしたが、モバイルのRAMをクリアすると、onTaskRemoved()メソッドが呼び出されるということに気付きました。 onTaskRemovedメソッドで私はブロードキャストを送信しています。ブロードキャストで私はサービスを再開しています。放送受信機が私のサービスonStartCommand()メソッドが呼ばれた後に呼び出されますが、私のモバイルデバイスの実行中のプロセスで私のサービスは見えません。 – tarun

関連する問題