2017-12-01 4 views
1

破壊されたときにもう一度サービスを開始したいです。AndroidサービスのonDestroyメソッドでonCreateメソッドを呼び出す必要がありますか?

@Override 
    public void onDestroy() { 
     super.onDestroy(); 
     onCreate(); 
    } 
+0

なぜ、あなたは 'onDestroy()'でサービスを再起動したいのですか?私はあなたがなぜそれを破壊して取り消すのではなく、長期間実行するのではないかということです。それとも、Androidシステムがそれを殺すからでしょうか?あなたが直面している状況について私たちにもっと教えていただければ、あなたの実際の問題に合ったより良い答えを提供することができます。 –

+0

@PeppermintPaddy私は自分のアプリケーションでソケットサーバーを作成したいと思っています。他のデバイスはこのサーバーと通信します。しかし、昨夜のサーバーは自動的に停止しますので、停止するとサーバーを再起動します。 – Jenish

+0

既にSTART_STICKYでフォアグラウンドサービスとして実行してみましたか? –

答えて

1

これは実行しないでください。これは何もするつもりはありません。サービスを再起動するには、onTaskRemove()で再起動する必要があります。

@Override 
public void onTaskRemoved(Intent rootIntent) { 
     Intent restartService = new Intent(getApplicationContext(), 
       this.getClass()); 
     restartService.setPackage(getPackageName()); 
     PendingIntent restartServicePI = PendingIntent.getService(
       getApplicationContext(), 1, restartService, 
       PendingIntent.FLAG_ONE_SHOT); 
     AlarmManager alarmService = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE); 
     alarmService.set(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime() + 1000, restartServicePI); 
} 
関連する問題