サービスは永遠に実行されます(UIアクティビティでヒット 'オフ'ボタンを使用しない限り)。
問題は、ユーザーがアクティビティを終了し、アクティビティメモリが解放されない場合です。 - UIアクティビティが閉じられていても、アプリで使用するメモリ量は同じです。 - UIアクティビティが閉じられていても、ヒープにはまだmapTilesやその他のUIが表示されます。
私の推測はどういうわけかサービスがアクティビティへの参照を保持しているからです。私は、Activity Contextの漏洩に関する多くの記事を知っています。サービスは、アプリケーションスコープに格納されている弱い参照を介してアクティビティのみを参照します。 (アプリケーションを拡張するクラス)
具体的にアクティビティを参照しているものを見つける方法はありますか?ドミネーターツリーは、すべての私の記憶を食べているmapTilesとListViewレイアウトを示しています...しかし、私はそのものを生かしているアクティビティへの参照を見つけることができません。
また、OutOfMemoryExceptionが発生した場合、HPROFヒープダンプの問題をダンプする方法はですか?
メニュー - >アプリケーション - >実行中のサービス。これはcom.myappが15MBを持っていることを示しています。私はアクティビティを終了して(後ろ向きの矢印)、電話でちょっと迷惑をかけると思いましたが、アクティビティはガベージコレクションされ、その数は減少します。それは決してしません。 – paulpooch
その画面はサービス固有のものです。あなたの活動はサービスを開始しており、そのサービスはその15MBのメモリを使って見ているものです。このサービスは、アクティビティを終了しても停止しません。 OSによって処理され、必要に応じて停止されます。私は例えば、現在、48時間以上稼働しているサービスを持っています...最後に私は電話を再起動しました。あなたのサービスコードの中で、あなたが望むようにこのサービスを停止/開始することを選択することができます。 – user432209
Ok - 画面はサービスクラスに固有のものであることを知っておきましょう。タスクマネージャはありますか?アクティビティがどれくらいのRAMを使用しているかをどのように知ることができますか? – paulpooch