アプリを起動すると、最初のアクティビティでヒープ サイズが 10 MB に増加し、次のアクティビティに進むとヒープ サイズが 37 MB に増加します。この 2 番目のアクティビティでは、ボタンのクリックでメモリを解放しているbitmap.recycle()
ため、特定のボタンをクリックするとヒープ サイズが 32MB に減少します。この 2 番目のアクティビティの終了を呼び出すと、メモリ サイズが 16MB に減少するため、最初のアクティビティの元のメモリ サイズが 10MB だったため、スタックから完全に削除されていないことがわかります。
2 番目のアクティビティに戻ると、次のクラッシュが発生し、ボタンのクリックで解放したビットマップが再作成されていないことが示されます。ユーザーがそのアクティビティに入るたびに2番目のアクティビティで同じonCreateメソッドを使用しているため、xmlからビットマップを再度フェッチする必要があります。
06-26 08:45:39.636: E/AndroidRuntime(6265): java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@41361ef0
ここで何が欠けていますか?終了が呼び出されたら、スタックからアクティビティを完全に削除する方法は?
アクティビティ 1 とアクティビティ 2 で使用してみandroid:launchMode="singleTop"
ました。android:clearTaskOnLaunch="true"
android:launchMode="singleTop" android:noHistory="true"
任意の提案をいただければ幸いです。