Handler
来源:互联网 发布:mac 获取当前用户名 编辑:程序博客网 时间:2024/06/06 06:37
package com.xxx.androidutil;
import java.lang.ref.WeakReference;
import android.os.Handler;
import android.os.Message;
/**
* Handler工具
* 1.生成一个唯一的ID,App全局唯一,这样可以防止可能发生的消息ID重复而导致的各种问题。
* 2.静态Handler接口, 用来消除Handle可能导致的泄漏。
*/
public class HandlerUtil {
private static int mId = 0x1000000;
public interface MessageListener {
public void handleMessage(Message msg);
}
/**
* 生成一个唯一的Message ID,App全局唯一,这样可以防止可能发生的消息ID重复而导致的各种问题。
*/
public static final int generateId() {
return ++ mId;
}
/**
* 用来消除Handle可能导致的泄漏
*/
public static class StaticHandler extends Handler {
WeakReference<MessageListener> listener;
/**
* @param listener
* 必读: 此listener必须由Activity实现该接口(推荐)或者是宿主Activity的类成员 :
* 这里是弱引用, 不会增加变量的引用计数, 使用匿名变量会导致listener过早释放(请参考此类的引用示例)
*/
public StaticHandler(MessageListener listener) {
this.listener = new WeakReference<MessageListener>(listener);
}
public StaticHandler() {
}
@Override
public void handleMessage(Message msg) {
MessageListener listener = this.listener.get();
Util.log("Load", "StaticHandler.handleMessage listener=" + listener);
if (listener != null) {
listener.handleMessage(msg);
}
}
}
import java.lang.ref.WeakReference;
import android.os.Handler;
import android.os.Message;
/**
* Handler工具
* 1.生成一个唯一的ID,App全局唯一,这样可以防止可能发生的消息ID重复而导致的各种问题。
* 2.静态Handler接口, 用来消除Handle可能导致的泄漏。
*/
public class HandlerUtil {
private static int mId = 0x1000000;
public interface MessageListener {
public void handleMessage(Message msg);
}
/**
* 生成一个唯一的Message ID,App全局唯一,这样可以防止可能发生的消息ID重复而导致的各种问题。
*/
public static final int generateId() {
return ++ mId;
}
/**
* 用来消除Handle可能导致的泄漏
*/
public static class StaticHandler extends Handler {
WeakReference<MessageListener> listener;
/**
* @param listener
* 必读: 此listener必须由Activity实现该接口(推荐)或者是宿主Activity的类成员 :
* 这里是弱引用, 不会增加变量的引用计数, 使用匿名变量会导致listener过早释放(请参考此类的引用示例)
*/
public StaticHandler(MessageListener listener) {
this.listener = new WeakReference<MessageListener>(listener);
}
public StaticHandler() {
}
@Override
public void handleMessage(Message msg) {
MessageListener listener = this.listener.get();
Util.log("Load", "StaticHandler.handleMessage listener=" + listener);
if (listener != null) {
listener.handleMessage(msg);
}
}
}
}
用法:
StaticHandler handler = new StaticHandler(mHandlerListener);
Message msg = handler.obtainMessage(MSG_ADDLISTENER);
msg.obj = lis;
msg.sendToTarget();
- Handler
- Handler
- Handler
- handler
- handler
- Handler
- Handler
- Handler
- Handler
- Handler
- Handler
- handler
- Handler
- handler
- handler
- Handler
- Handler
- Handler
- c++设计模式--单例模式
- [转]C++中运算符优先级表
- UVA 11594 UVA11603(与hdu4700类似) 点对点的最小割 Gomory-Hu 和Gusfield算法学习
- poj 2001 Shortest Prefixes
- RISC和CICS指令流水线的区别
- Handler
- View 5应用之三:手动池管理物理机
- [Codecademy] HTML&CSS第九课 :CSS Selectors
- 1.1介绍与多项式曲线拟合(Polynomial Curve Fitting)
- 数学之路(3)-机器学习(3)-机器学习算法-SVM[8]
- BNU 32788 The best trade path (有向图的最小环)
- 韦东山视频实验之Input子系统分析之二
- mmapExample.c--内存映射实现文件的复制
- c++与oc的多态性的实现原理