私はかなり複雑なアプリを持っています-
UIアクティビティは、サービスを起動し、2ウェイAIDLコールバックを設定して、2つが通信できるようにします。
サービスは永久に実行されます(UIアクティビティの[オフ]ボタンを押さない限り)。
問題は、ユーザーがアクティビティを終了するときに、アクティビティメモリが解放されないことです。-UIアクティビティを閉じても、アプリで使用されるメモリの量は同じです。-UIアクティビティが閉じられている場合でも、ヒープにはmapTilesやその他のUIがらくたが表示されます。
だから私の推測では、サービスはどういうわけかアクティビティへの参照を保持しています。アクティビティコンテキストのリークについて警告する多くの記事を知っています。サービスは、アプリケーションスコープに格納されている弱参照を介してのみアクティビティを参照します。(アプリケーションを拡張するクラス)
アクティビティを具体的に参照しているものを見つける方法はありますか?ドミネーターツリーには、すべてのメモリを消費しているmapTilesとListViewのレイアウトが表示されます...しかし、そのようなものを存続させているアクティビティへの参照が見つかりません。
また、OutOfMemoryExceptionが発生した場合にHPROFヒープダンプをダンプする方法はありますか?