android View引用是否传递给外部类创建内存泄漏?

时间:2015-11-02 15:20:32

标签: android view memory-leaks

我有一个问题。这样的课程是这样的:

public class AmountTextWatcher implements TextWatcher {
    private final TextView amountTo;

    public AmountTextWatcher(TextView amountTo) {
        this.amountTo = amountTo;
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {

    }

    @Override
    public void afterTextChanged(Editable s) {
        Pattern mPattern = Pattern.compile(PatternHolder.amountPattern());

        Matcher matcher = mPattern.matcher(s.toString());
        if (matcher.find()) {
            amountTo.setTextColor(Color.BLACK);
        } else {
            amountTo.setTextColor(Color.RED);
            if (s.length() > 0) s.delete(s.length() - 1, s.length());
        }
    }
}

创建内存泄漏?我是否需要对它进行引用并在onDestroy(或onDestroyView,无论如何)中清除它。

欢呼声 WOJTEK

1 个答案:

答案 0 :(得分:0)

您的AmountTextWatcherTextView持有。 AmountTextWatcher保留在同一个TextView上。因此,从垃圾收集的角度来看,这两个对象是同一对象图的一部分。这些物体的寿命将由谁控制其中任何一个来决定。

如果您对AmountTextWatcher的唯一引用来自TextView,则只要AmountTextWatcher TextViewTextView就会生效。通常情况下,这与显示AmountTextWatcher的活动一样长。

IOW,你的TextView不会是内存泄漏,只要它与之关联的POST本身不会泄露。