0

特定の状況では、EditText を作成し、値を別の Fragment に渡し、EditText が属する ViewGroup で removeAllViews を呼び出して、EditText を削除します。

問題は、EditText に関連付けられた InputConnectionWrapper がまだメモリを占有していることです。

ここに画像の説明を入力

上記のヒープ ダンプでは、InputConnectionWrapper が 300 を超えて割り当てられており、かなりのメモリを占有しています。

ただし、Heap Dump が有効な場合、Activity には EditText が 1 つしかないため、対応する EditText により、InputConnectionWrapper が作成されていないと判断されます。

InputConnectionWrapper を閉じるために、次の関数を試しました。

    TextKeyListener.clear(editText.getText());
    editText.setHint(null);
    editText.removeTextChangedListener(this);
    editText=null;
    // The ViewGroup will then execute removeAllViews.

ただし、InputConnectionWrapper はファイナライズされていないため、時間の経過とともにさらに割り当てられるようです。

InputConnectionWrapper がファイナライズされない理由は何ですか?

4

1 に答える 1