2

はい、メモリ不足のキラーによって殺されるのを防ぎます。AndroidManifest.xml にオプションはありますか?

アプリには、常にバックグラウンドで実行する必要があるサービスが含まれている可能性があります。

私のアプリはシステム/アプリに配置され、重要なサービスを実行しています。これが私たちのデザインです。

たくさんのアプリが実行されており、メモリを節約するために他のアプリを制御することはできませんが、電話アプリや SystemUi と同じように、Android が私を殺さないようにする方法が必要です。

Android では、oom_adi が低いアプリは強制終了される可能性が低くなります。そのためには、( application android:persistent="true") を設定するだけです。

4

3 に答える 3

4

低メモリキラーによってアプリが殺されるのを防ぐ方法はありますか?

あまり。startForeground()あなた(およびユーザー)があなたのサービスがフォアグラウンドのユーザーエクスペリエンスの一部であると信じている場合に使用できますが、それNotificationはステータスまたはシステムバーに表示されます。

常にバックグラウンドで実行する必要があります

ユーザーはいつでもサービスを削除できます(たとえば、Android 4.0以降の[最近のタスク]リストのエントリをスワイプしたり、タスクキラーを使用したり、[設定]の[強制停止]を使用したりします)。永遠のサービスを本当に必要とするアプリケーションは、失敗する運命にあります。

于 2012-10-09T22:45:28.187 に答える
1

Android はかなり効率的で、このようなシナリオの処理に適しています。コモンズウェアが上で指摘したように、

ユーザーはいつでもあなたのサービスをやめることができますし、そうするでしょう

あなたのアプリはユーザーを制御できません。これは、OPの質問が遭遇しているものであり、エンドユーザーの行動と選択を(むしろ弱々しく)軽減しようとしています!

低メモリ キラー を「倒す」ためにエネルギーを浪費するよりも、リソースを占有しないようにアプリを再考し、再設計する方がよいでしょう。リソースを消費しないようにするには、Android が介入して、私があなたのアプリケーションに提供した貴重なリソース、または私はあなたを殺します」、文字通り!

于 2012-10-09T23:59:36.663 に答える
0

長時間実行されるサービスの代わりにアラームを使用することを検討してください。ほとんどの場合、サービスが常に存在しなくても同じことを達成できます。

于 2012-10-09T23:15:56.837 に答える