記事: http://developer.android.com/resources/articles/avoiding-memory-leaks.html は次のことを言及しました:
private static Drawable sBackground;
@Override
protected void onCreate(Bundle state) {
super.onCreate(state);
TextView label = new TextView(this);
label.setText("Leaks are bad");
if (sBackground == null) {
sBackground = getDrawable(R.drawable.large_bitmap);
}
label.setBackgroundDrawable(sBackground);
setContentView(label);
}
Drawable がビューにアタッチされると、ビューは drawable のコールバックとして設定されます。
そうです、drawable はそのビューをコールバックとして保持します。
public void setBackgroundDrawable(Drawable d) {
......
d.setCallback(this);
ただし、画面の向きが変わると、ドローアブルのコールバックが新しいアクティビティ コンテキストとしてリセットされます。以前の textView は静的なドローブルから切り離され、textview とそれに応じたアクティビティが再利用可能になると思います。
誰か詳しく説明してくれませんか?ありがとう。