私の ImageView は Activity レイアウトで定義されており、ListView または GridView がないため、ここでは自動ビュー リサイクルはありません。アクティビティが読み込まれるたびに、logcat で「java.lang.IllegalArgumentException: リサイクルされたビットマップを描画できません」というエラーが発生します。これが私のImageViewのスタイルです。ご覧のとおり、ここには特別なことは何もありません。この画像で注目すべき唯一の点は、かなり大きいことです (Nexus 10 の全画面サイズ)。コメントアウトするとエラーが解決するため、このビューが原因であることはわかっています。
<style name="tabletbackground">
<item name="android:scaleType">centerCrop</item>
<item name="android:src">@drawable/loading_background</item>
<item name="android:contentDescription">background image</item>
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">fill_parent</item>
</style>
このアクティビティのコードのどこにも、ビットマップをリサイクルするための呼び出しはありません。ここで何が起こっているのか分かりますか?
好奇心旺盛な人向けのレイアウトの一部を次に示します。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
style="@style/news_act_root" >
<ImageView
style="@style/tabletbackground"
android:id="@+id/tabletbackground" />
<!-- redacted -->
</RelativeLayout>