代码示例: 下面是一个常见的内存泄漏示例,使用了匿名内部类和 Handler,导致 Activity 被持有,无法被释放。
public class MainActivity extends AppCompatActivity {
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// do something
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
// do something
}
}, 10000);
}
}
通过将匿名内部类转换为静态内部类,并将 Handler 修改为弱引用,将 Activity 定义为 static 类型,可以避免该问题。
public class MainActivity extends AppCompatActivity {
private static class MyHandler extends Handler {
private WeakReference<
上一篇:Android内存不足
下一篇:Android内存地址修改