2016-03-22 6 views
1

私のプロジェクトでは、MainActivity A(アプリケーションのナビゲーションを処理する)、フラグメント1(グリッドビュー)、フラグメント2(マップ)があります。Maps APIのメモリリーク

mainactivityのコールバックを使用してグリッドフラグメント(選択されたエントリのマーカーを表示)からマップフラグメントを呼び出しています。マップフラグメントに置き換えていくつかのargs(マーカーの詳細)を置き換えます。これまでの作業が、

すべてが一定の時間がのOutOfMemory例外を取得マップフラグメントを呼び出した後:

FATAL EXCEPTION: GLThread 400 Process: XXX , PID: 2378 
java.lang.OutOfMemoryError: Failed to allocate a 4194316 byte allocation with 684253 free bytes and 668KB until OOM 
at dalvik.system.VMRuntime.newNonMovableArray(Native Method) 
at android.graphics.Bitmap.nativeCreate(Native Method) 
at android.graphics.Bitmap.createBitmap(Bitmap.java:812) 
at android.graphics.Bitmap.createBitmap(Bitmap.java:789) 
at android.graphics.Bitmap.createBitmap(Bitmap.java:756) 
at com.google.maps.api.android.lib6.gmm6.m.c.i.a(Unknown Source) 
at com.google.maps.api.android.lib6.gmm6.m.c.l.a(Unknown Source) 
at com.google.maps.api.android.lib6.gmm6.m.c.l.a(Unknown Source) 
at com.google.maps.api.android.lib6.gmm6.m.c.l.b(Unknown Source) 
at com.google.maps.api.android.lib6.gmm6.m.c.b.ak.a(Unknown Source) 
at com.google.maps.api.android.lib6.gmm6.m.c.b.as.a(Unknown Source) 
at com.google.maps.api.android.lib6.gmm6.m.x.a(Unknown Source) 
at com.google.maps.api.android.lib6.gmm6.m.l.a(Unknown Source) 
at com.google.maps.api.android.lib6.gmm6.m.l.b(Unknown Source) 
at com.google.maps.api.android.lib6.gmm6.m.cj.g(Unknown Source) 
at com.google.maps.api.android.lib6.gmm6.m.cj.run(Unknown Source) 

がtemporarlyようにマップマーカーのカスタム情報ウィンドウ用のビットマップを削除し、しようとしましたが、実際には影響しませんでした。マップフラグメントを置き換えるたびに、メモリが増加し、増加します。

古いマップをどのように処理するか、いくつかの方法で試していくつかの問題を見てみましたが、適切な解決策を見つけられませんでした。

+0

これを追加マップメソッドの作成を2回呼び出す –

+0

[LeakCanary](https://github.com/square/leakcanary)を使用してメモリリークを検出できます。 – Ziem

+0

あなたはgetMapAsync()メソッドを意味しますか?これはonResumeで一度だけ呼び出されます。また、onDestroyのmap.clear()でマップを破棄しようとしましたが、他の問題で読んでも効果はありません。 – Norman

答えて

-1

これらの例外は、一般的にあなたがあなたのものと同じlayout..Checkに、同時に2つのマップを描画する場合にのみ発生し、これを読んで詳細についてはマニフェストファイル

android:largeHeap="true" 

http://developer.android.com/guide/topics/manifest/application-element.html

+0

既にそれを試してみましたが、 – Norman

+0

イメージをgridviewにロードしてからイメージを縮小し、それらをロードするとメモリ使用量が減少します。 –

+0

私が書いたように、一時的にビットマップを削除しても問題は解決しませんでした。グリッドビューの画像にもピカソを使用している – Norman