1、在Activity中使用非静态内部类时, 如果生命周期比Activity长的话会导致内存泄漏。
所以尽量使用持有Activity弱引用的静态内部类。
/**
/**
* @desc handler防止内存泄漏例子
* @info Created by LzPeng on 2019/4/19 11:40
*/
public class MainActivity extends AppCompatActivity {
private ImageView ivImg;
/**
* 匿名类的静态实例不会隐式持有他们外部类的引用
*/
private static final Runnable sRunnable = new Runnable() {
@Override
public void run() {
//
}
};
private final MyHandler mHandler = new MyHandler(this);
/**
* 静态内部类的实例不会隐式持有他们外部类的引用。
*/
private static class MyHandler extends Handler {
private final WeakReference<MainActivity> mActivity;
MyHandler(MainActivity activity) {
mActivity = new WeakReference<MainActivity>(activity);
}
@Override
public void handleMessage(Message msg) {
MainActivity activity = mActivity.get();
if (null != acti