2011-01-16 4 views
13

永続的なサービスを作成しないでください。パーシスタントサービス

しかし私たちの知識を増やしたいと思っている人にとって、理論的にはどのように作成するのでしょうか?

私は周りに遊んでいて、startForegroundを使用するサービスがメモリ不足の状況で殺されていることに気づきました。

私は、今では廃止された許可PERSISTENT_ACTIVITYを見ましたが、これはあまり効果がありませんでした。

だから秘密は何ですか?

答えて

40

システムアプリケーションを開発している場合に限り、サービスを永続化することができます。これらのサービスは基本的には無効になり、 "adb shell dumpsys activity"コマンドの出力に "PERS"と表示されます。それはあまりよく文書化されていないので、私は速報をPersistent services in Androidに書いた。うまくいけば、それは一部の人々を助けるだろう。

しかし、システム以外のアプリケーションでは、startForegroundが最適です。

+3

ありがとうございます - 私は数日間のソリューションを探しています - StackOverflow上にシステムアプリ開発者がいることを知っている人がいます。 –

+0

追加注:永続フラグは完全に機能します。デバイスのリソースが大幅に少なくても、サービスは決して殺されません。 –

+0

KitKat 4.4.2には、予告なしにサービスを停止するバグがあります。このバグが続くと、App WidgetsをPersistentにする必要があります – AVEbrahimi

-5

OSがサービスを停止させることは絶対にありません。

+0

私は正しいとは確信していません "adb shell dumpsys activity" PERSとラベル付けされたサービスがあります...私はそれが永続的であると想定しています。ラベル? – ekawas

+0

あなたはそのラベルが何を意味するのか知っていますか? Androidはいつでも何かを無料で殺すことができます。あるものは他のものより高い優先度を持っていますが、あなたはそれを防ぐことはできません。あなたのサービスは何をしているのですか?周りをつかむことがとても重要だと思いますか? – Falmarri

+0

私はラベルが何を意味するのか分からないので、私はそれが永続的であることを「仮定」していると書いたのです。では、音楽を演奏するサービスは何をしていますか?彼らはランダムにシャットダウンする危険性がありますか?私は、これがバックグラウンドイベントであると再度​​思います。 – ekawas