1

ビューの描画キャッシュを取得しています。これは、アクティビティに contentView として設定されています。次に、新しいコンテンツ ビューをアクティビティに設定し、その描画キャッシュをアクティビティに渡します。しかし、Android はビットマップをリサイクルするため、次の例外が発生します。

06-13 01:58:04.132: E/AndroidRuntime(15106): java.lang.RuntimeException: Canvas: リサイクルされたビットマップ android.graphics.Bitmap@40e72dd8 を使用しようとしています

それを修正する方法はありますか?Bitmap クラスを拡張するアイデアがありましたが、最終的なものです。なぜ GC はそれをリサイクルするのですか?

4

2 に答える 2

2

リサイクルされるビットマップは、それがガベージ コレクションされたことを意味するのではなくBitmap.recycle()、意図的に呼び出されたことを意味します。私は特定のコードに精通していませんがsetContentView()、何か新しいものを呼び出すと、以前のビューが破棄されることは間違いありません (それらはもう必要ないと想定されているため)。ヒットしてImageViewいるようrecycle()で、そのビットマップを良き市民にする必要があるため、エラーが発生します。私の推測では、あなたがやろうとしていることはサポートされていません。

于 2012-06-12T22:17:35.887 に答える
1

問題は解決しました。ビットマップを新しいものに複製しました。キャッシュされたビューが描画キャッシュで削除されたため、例外が発生したと思います。

于 2012-06-12T22:35:12.627 に答える