3

記事: 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 とそれに応じたアクティビティが再利用可能になると思います。

誰か詳しく説明してくれませんか?ありがとう。

4

0 に答える 0