2012-02-07 10 views
5

START_STICKYを使用すると、私のサービスがタスクマネージャによってクラッシュ/強制終了されると、自動的に再起動されます。私は、再起動されるサービスのリストが別の順序であることがわかります。このサービスの再起動を優先して、キューの先頭に配置することで早く開始したいと考えています。クラッシュしたアンドロイドサービスのスケジューリングの優先順位付け

通常、サービスを再開するのに15秒から45秒かかります。他のサービスより早くこのサービスの優先順位を付けたり開始する方法はありますか?

答えて

0

あなたのサービスは長時間走っていますか?そうであれば、それを取り除き、必要なときにだけ起動してください。 Androidサービスはデーモンとして動作するものではありません。ユーザの操作やインタフェースが不要な場合、バックグラウンドで短い居住者として働くことを意図しています。

"私はちょうど座っている"サービスのほとんどは、放送の意図を聞くことができ、このようにすばらしい市民になることができます。

もう1つ:サービスが既に短期間に稼働していて、タスクキラーがアクティブな場合は簡単です。ユーザーの問題であり、ユーザーの問題ではありません。システムはタスクキラーを必要とせず、あなたはそれらを世話してはいけません。ユーザーは、使用するのが健康でないことを知っておく必要があります。

+0

マインは「別のもの」です。私は私のアプリケーションをタスクマネージャの無視リストに追加するメッセージを追加する必要がありますと考えています。 – dcanh121

0

このソリューションは少し汚れていると思いますが、START_STICKYで始まるサービスを使用し、他のすべてのサービスをSTART_NOT_STICKYに設定することができます。

これで、新しいサービスを使用して他のすべてのサービスを開始することができます(これは必ずしも必要ではありません)。これは、開始されるサービスに全体の意図を渡すことができるので、実際は簡単な実装です。

ブロードキャストをすべてのサービスのOnDestroy()に追加して、古いサービスの1つがシステムによって強制終了されたことを新しいサービスに伝えることができます。 OnDestroy()経由で古い開始インテントを渡すこともできるので、再起動されます。

新しいサービスが強制終了された場合は、他のサービスが停止した場合に再起動後も確認してから、再起動の優先順位を設定することができます。

関連する問題