android handler弱引用,防止内存泄露
2015-05-14 17:07
302 查看
当工程中用到很多Handler时,为防止内存泄露,使用弱引用
使用时:private MyHandler handler=new MyHandler(this);
WeakReference弱引用,与强引用(即我们常说的引用)相对,它的特点是,GC在回收时会忽略掉弱引用,即就算有弱引用指向某对象,但只要该对象没有被强引用指向(实际上多数时候还要求没有软引用,但此处软引用的概念可以忽略),该对象就会在被GC检查到时回收掉。对于上面的代码,用户在关闭Activity之后,就算后台线程还没结束,但由于仅有一条来自Handler的弱引用指向Activity,所以GC仍然会在检查的时候把Activity回收掉。这样,内存泄露的问题就不会出现了。
<span style="font-family:Courier New;">static class MyHandler extends Handler { private final WeakReference<MainActivity> mOuter; public MyHandler(MainActivity act) { mOuter = new WeakReference<MainActivity>(act); } @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); MainActivity outer = mOuter.get(); if (outer != null) { switch (msg.what) { case 1: break; } } } }</span>
使用时:private MyHandler handler=new MyHandler(this);
WeakReference弱引用,与强引用(即我们常说的引用)相对,它的特点是,GC在回收时会忽略掉弱引用,即就算有弱引用指向某对象,但只要该对象没有被强引用指向(实际上多数时候还要求没有软引用,但此处软引用的概念可以忽略),该对象就会在被GC检查到时回收掉。对于上面的代码,用户在关闭Activity之后,就算后台线程还没结束,但由于仅有一条来自Handler的弱引用指向Activity,所以GC仍然会在检查的时候把Activity回收掉。这样,内存泄露的问题就不会出现了。
相关文章推荐
- android中handler使用WeakReference防止内存泄露
- android中handler使用WeakReference防止内存泄露
- android中handler使用WeakReference防止内存泄露
- Android 优化Handler防止内存泄露
- Android中handler使用WeakReference防止内存泄露
- Android内存溢出与优化(四)——防止Handler导致的内存泄露
- Android handle 弱引用防止内存泄露
- Android中使用Handler造成内存泄露的分析和解决
- Android App 内存泄露之Handler
- Handler防止内存泄露
- Android 内存泄露 和 Handler内存泄露 整理
- Android使用Handler防止内存泄漏
- Android中使用Handler造成内存泄露的分析和解决
- android--弱引用来预防内存泄露
- Android中使用Handler造成内存泄露的分析和解决
- Android性能优化(三)——Handler使用不当引起的内存泄露
- Android中使用Handler造成内存泄露的分析和解决
- 防止android应用的内存泄露
- Android App 内存泄露之Handler
- Android内存优化防止内存泄露