android - Handler 内存泄露问题

浏览:56日期:2022-12-07

问题描述

请问这种写法会不会导致内存泄露:

static class MyHandler extends Handler {WeakReference<Activity> mWeakReference = null;public MyHandler(SampleActivity activity) { mWeakReference = new WeakReference<Activity>(activity);}@Overridepublic void handleMessage(Message msg) { super.handleMessage(msg); SampleActivity activity = (SampleActivity) mWeakReference.get(); if(activity == null) {return; } else {if(msg.what == 0) { //do something} }} }

然后我在onCreate方法中初始化一个MyHandler的对象:

private MyHandler mHandler = null; @Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);initViews();mHandler = new MyHandler(this); }

问题解答

回答1:

不会了,这是标准的使用弱引用的方式。

回答2:

可以不用弱引用 在销毁的时候 清空消息就行了

回答3:

楼主去关注一下google的官方demo,以及lint的提示

相关文章: