Android handler(工具类)弱引用 WeakReference
来源:互联网 发布:淘宝代理软件是什么 编辑:程序博客网 时间:2024/05/16 01:31
转载:(http://blog.csdn.net/android_zhengyongbo/article/details/70046398)
handler弱引用可以在一定程度上防止内存泄露
handler弱引用的工具类
import android.os.Handler;
import android.os.Message;
import java.lang.ref.WeakReference;
/**
*
* author: Blankj
* blog : http://blankj.com
* time : 16/11/01
* desc : Handler相关工具类
*
*/
public final class HandlerUtils {
private HandlerUtils() { throw new UnsupportedOperationException("u can't instantiate me...");}public static class HandlerHolder extends Handler { WeakReference<OnReceiveMessageListener> mListenerWeakReference; /** * 使用必读:推荐在Activity或者Activity内部持有类中实现该接口,不要使用匿名类,可能会被GC * * @param listener 收到消息回调接口 */ public HandlerHolder(OnReceiveMessageListener listener) { mListenerWeakReference = new WeakReference<>(listener); } @Override public void handleMessage(Message msg) { if (mListenerWeakReference != null && mListenerWeakReference.get() != null) { mListenerWeakReference.get().handlerMessage(msg); } }}/** * 收到消息回调接口 */public interface OnReceiveMessageListener { void handlerMessage(Message msg);}
}
使用示例
import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.Toast;public class MainActivity extends AppCompatActivity implements HandlerUtils.OnReceiveMessageListener{ private HandlerUtils.HandlerHolder handlerHolder; private static final int M_ONE=12; private static final int M_TWO=14; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); handlerHolder = new HandlerUtils.HandlerHolder(this); handlerHolder.sendEmptyMessage(M_ONE); handlerHolder.sendEmptyMessage(M_TWO); } @Override public void handlerMessage(Message msg) { switch (msg.what){ case M_ONE: Toast.makeText(this, "M_ONE", Toast.LENGTH_SHORT).show(); break; case M_TWO: Toast.makeText(this, "M_TWO", Toast.LENGTH_SHORT).show(); break; } }}
0 0
- Android handler(工具类)弱引用 WeakReference
- WeakReference(弱引用)
- WeakReference(弱引用)
- WeakReference(弱引用)
- Android 浅谈弱引用WeakReference
- Android Handler WeakReference 处理
- Handler还需要用到弱引用(WeakReference)吗?
- Android Handler内部类+WeakReference
- Android 图片三级缓存之内存缓存(告别软引用(SoftRefrerence)和弱引用(WeakReference))
- Android 图片三级缓存之内存缓存(告别软引用(SoftRefrerence)和弱引用(WeakReference))
- Android 图片三级缓存之内存缓存(告别软引用(SoftRefrerence)和弱引用(WeakReference))
- Android 图片三级缓存之内存缓存(告别软引用(SoftRefrerence)和弱引用(WeakReference))
- Android 图片三级缓存之内存缓存(告别软引用(SoftRefrerence)和弱引用(WeakReference))
- Android 图片三级缓存之内存缓存(告别软引用(SoftRefrerence)和弱引用(WeakReference))
- Android 图片三级缓存之内存缓存(告别软引用(SoftRefrerence)和弱引用(WeakReference))
- Android 图片三级缓存之内存缓存(告别软引用(SoftRefrerence)和弱引用(WeakReference))
- Android 图片三级缓存之内存缓存(告别软引用(SoftRefrerence)和弱引用(WeakReference))
- Android 图片三级缓存之内存缓存(告别软引用(SoftRefrerence)和弱引用(WeakReference))
- java并发控制的三种方式
- JSON与XML的区别比较
- java.lang.NoSuchMethodError: org.apache.axiom.soap.SOAPEnvelope.hasFault()Z错误的解决
- APP推送通知相关实现
- MATLAB——scatter的简单应用
- Android handler(工具类)弱引用 WeakReference
- 导出数据到excel
- Solr入门
- java监听器+quartz实现每天动态时间执行任务的功能
- 预制件的问题
- Android 影藏和打开软键盘
- 使用maven构建基本的web项目结构
- easyui treegrud 无法识别state
- Linux基础命令-find常见用法示例