2011-07-14 3 views
2

システムがメモリを殺した後にBOOT_COMPLETEによって開始されたサービスはどうなりますか?システムがシステムを終了した後にBOOT_COMPLETEによって開始されたサービスはどうなりますか?

携帯電話を再起動せずに再起動しますか?それは何とかそれを再起動することは可能ですか?

できるだけ重要なサービスが死亡するのを避けるためのベストプラクティスは何ですか?

答えて

1

を見てみたいことがあり?

おそらく。 「システムがメモリを殺す」ために実際にあった場合に、適切な値をonStartCommand()(たとえば、)から返す場合は、後でいつでも再起動する必要があります。サービスがユーザーの操作(たとえば、[設定]の[サービスの管理]画面で強制停止)によって強制終了された場合、サービスは再開されません。

できるだけ重要なサービスが死亡するのを避けるためのベストプラクティスは何ですか?

まず、このような永遠のサービスに依存しないようにアプリケーションを設計します。 Androidアプリケーションの99.44%には、起動時に起動するサービスはもちろん、継続的に実行されるサービスは必要ありません。 Android搭載端末のユーザーは、自分のアプリがいつも重要なサービスだと思っている開発者を嫌います。そのため、老年期のためにタスクキラー、強制停止、Android殺人サービスがあります。たとえば、新しい電子メールを15分ごとに確認する場合は、AlarmManagerIntentServiceを使用してください。サービスは永遠に実行されるわけではありません。

起動時に起動して永遠に実行されるサービスが本当に必要なアプリケーションの0.56%に当てはまることを私とユーザーに実証できれば、startForeground()を使用できます。これにより、サービスはフォアグラウンドのユーザーエクスペリエンスの一部であることがOSに示されます。 Notificationを表示する必要があります。理想的には、ユーザーが正当化されたと感じることがなくなった場合に、サービスをきれいにシャットダウンすることができます。

+0

ありがとうございました! =) – thiagolr

1

サービスを再起動する必要がある場合は、AlarmManagerを使用して別のBroadcastReceiverでサービスをチェックする必要があります。ただし、システムによってメモリが殺されたときに自動的に再起動されません。

0

AlarmManagerを使用して、インテントを定期的に送信します。インテントを受信し、サービスが実行中であることを確認します。

1

あなたはそれが今までの携帯電話を再起動せずに再起動されますSTART_STICKY

関連する問題