2011-01-12 40 views
7

サービスが終了したら、自動的に再起動する方法はありますか?あなたはあなたのサービスが殺されている場合でもonDestroy()死んだサービスを自動的に再起動するには?

+1

サービスが強制終了された場合は、ユーザーがそのサービスを強制終了したか、メモリ不足のためです。つまり、おそらくそれを再起動しないでください。あなたは応答のためにそのような長時間実行しているサービスを残すべきではありません – Falmarri

+1

しかし、私はそれらを殺したときにいくつかのサービスがあります、彼らはすぐに自分自身を再起動します。 – SEed

答えて

0

を呼び出さずに、時には

、システムは、後でそれを再起動しようとします。 moreをお読みください。

3

START_STICKYまたはSTART_REDELIVER_INTENT(戻り値に応じて)を返します。システムは、明示的にサービスを停止するまで、サービスを再起動します。

http://developer.android.com/reference/android/app/Service.html#START_REDELIVER_INTENT

http://developer.android.com/reference/android/app/Service.html#START_STICKY

+0

START_STICKYしています。 nexus 5で正常に動作し、サービスを再起動します。しかし、xiaomiサービスでは、私のアプリケーションが殺されるとすぐに殺されています。 – Abhi

6

私はIntentServiceを継承したので、私は穏やかでなければなりませんでした。私はonStartCommandをオーバーライド()が、ある

public int onStartCommand(Intent intent, int flags, int startId) { 
    super.onStartCommand(intent, flags, startId); 
    return START_STICKY; 
} 

は、親が何それがをすべきとSTART_STICKYを返すやらせるとき それは私のために働きました。

+0

私は同じことをやっています。ネクサス5で正常に動作します。しかし、xiaomiサービスでは、私のアプリケーションが殺害されるとすぐに殺されています。 – Abhi

+0

悪い場合には、あなたのサービスがライブであることを確認する目覚まし時計を開始することができます。 CPUをスリープ状態にするとバッテリ寿命が長くなるので、頻繁に使用することに注意してください。 スワイプを元に戻すアプリがありますか? – Meymann