START_STICKYを使用すると、私のサービスがタスクマネージャによってクラッシュ/強制終了されると、自動的に再起動されます。私は、再起動されるサービスのリストが別の順序であることがわかります。このサービスの再起動を優先して、キューの先頭に配置することで早く開始したいと考えています。クラッシュしたアンドロイドサービスのスケジューリングの優先順位付け
通常、サービスを再開するのに15秒から45秒かかります。他のサービスより早くこのサービスの優先順位を付けたり開始する方法はありますか?
START_STICKYを使用すると、私のサービスがタスクマネージャによってクラッシュ/強制終了されると、自動的に再起動されます。私は、再起動されるサービスのリストが別の順序であることがわかります。このサービスの再起動を優先して、キューの先頭に配置することで早く開始したいと考えています。クラッシュしたアンドロイドサービスのスケジューリングの優先順位付け
通常、サービスを再開するのに15秒から45秒かかります。他のサービスより早くこのサービスの優先順位を付けたり開始する方法はありますか?
あなたのサービスは長時間走っていますか?そうであれば、それを取り除き、必要なときにだけ起動してください。 Androidサービスはデーモンとして動作するものではありません。ユーザの操作やインタフェースが不要な場合、バックグラウンドで短い居住者として働くことを意図しています。
"私はちょうど座っている"サービスのほとんどは、放送の意図を聞くことができ、このようにすばらしい市民になることができます。
もう1つ:サービスが既に短期間に稼働していて、タスクキラーがアクティブな場合は簡単です。ユーザーの問題であり、ユーザーの問題ではありません。システムはタスクキラーを必要とせず、あなたはそれらを世話してはいけません。ユーザーは、使用するのが健康でないことを知っておく必要があります。
このソリューションは少し汚れていると思いますが、START_STICKY
で始まるサービスを使用し、他のすべてのサービスをSTART_NOT_STICKY
に設定することができます。
これで、新しいサービスを使用して他のすべてのサービスを開始することができます(これは必ずしも必要ではありません)。これは、開始されるサービスに全体の意図を渡すことができるので、実際は簡単な実装です。
ブロードキャストをすべてのサービスのOnDestroy()
に追加して、古いサービスの1つがシステムによって強制終了されたことを新しいサービスに伝えることができます。 OnDestroy()
経由で古い開始インテントを渡すこともできるので、再起動されます。
新しいサービスが強制終了された場合は、他のサービスが停止した場合に再起動後も確認してから、再起動の優先順位を設定することができます。
マインは「別のもの」です。私は私のアプリケーションをタスクマネージャの無視リストに追加するメッセージを追加する必要がありますと考えています。 – dcanh121