我有一个 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)'
我如何解决上述问题?
必须是targetTextView.get().setText("")
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句