【发布时间】:2017-11-17 11:32:37
【问题描述】:
我有一个 Activity 和一个名为 InnerClass 的内部类,它的 updateAfterDelay() 方法必须更新 TextView 。我想避免内存泄漏。所以我将InnerClass 更改为静态并尝试像这样使用WeakReference:
public class MainActivity extends Activity {
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate ( savedInstanceState );
setContentView ( R.layout.main );
textView = (TextView) findViewById ( R.id.textView );
}
private static class InnerClass {
private final WeakReference<TextView> targetTextView;
public InnerClass(TextView targetTextView) {
this.targetTextView = new WeakReference<TextView> ( targetTextView );
}
void updateAfterDelay() {
targetTextView.setText ( "text" );
}
}
}
但是在targetTextView.setText ( "text" ); 我得到这个编译错误:
cannot resolve method 'setText(java.lang.String)'
我该如何解决上述问题?
【问题讨论】:
标签: android android-activity memory-leaks weak-references