私は非常に奇妙な問題に直面しています。カスタムビューを含む がありますActivity
。ActionBar
このカスタム ビューの XML を次のように読み込むと:
LayoutInflater inflater = LayoutInflater.from(this);
ViewGroup vg = (ViewGroup) inflater.inflate(R.layout.action_search_form,null);
リーク: アクティビティは GC されていません。次の修正が機能します(なぜですか?):
LayoutInflater inflater = LayoutInflater.from(getApplicationContext());
ただしOnClickListener
、子ビューに設定すると、再びリークします。
ImageButton clear = (ImageButton) vg.findViewById(...);
clear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Even if empty
}
});
}
これはすべてアクティビティのプライベート メソッドで発生し、すべてのビューはローカル変数です。
修正を見つけましたが、それが機能する理由がわかりません:ビューはシンプルだったので、XML を拡張する代わりに Java でコーディングしました。コンテキストが LayoutInflater に渡されず、アクティビティ自体から何も起こらないという事実に関連しているのではないかと思いましたが、誰かが何が起こったのかを理解するのを手伝ってくれれば、私はそれを大いに感謝します.