创建子线程中的Handler

Handler默认是运行在主UI线程中的,如果想创建子线程中的Handler,可以使用HandlerThread和Handler类配合使用,如下所示:

	private static final class UserCenterThread extends HandlerThread {
		public UserCenterThread(String name) {
			super(name);
		}

		public UserCenterThread(String name, int priority) {
			super(name, priority);
		}
	}
private static final class UserCenterHandler extends Handler {	// 子线程中的Handler
	private final WeakReference<UserCenterHelper> mWeakRef;

	public UserCenterHandler(final Looper looper, final UserCenterHelper helper) {
		super(looper);
		mWeakRef = new WeakReference<UserCenterHelper>(helper);
	}

	@Override
	public void handleMessage(Message msg) {
		final UserCenterHelper helper = mWeakRef.get();
		if (null == helper) {
			return;
		}

		HelperOperateItem item = null;
		ResultToken token = null;

		if (msg.obj instanceof ResultToken) {
			token = (ResultToken) msg.obj;
			final String helperUserData = token.mUserData;
			item = helper.removeOperateItem(helperUserData);
			if (null == item) {
				return;
			}
		} else {
			return;
		}
		XLLog.d(TAG, "msg:what[" + msg.what + "]error[" + msg.arg1 + "]optType[" + item.mOperateType
			+ "]helperUserData[" + item.mHelperUserData + "]");

		switch (item.mOperateType) {
		case TYPE_OPERATE_QUERY_WEBSITES:
			helper.handleQeuryWebsiteResult(token.mResultObj, msg.arg1, item);
			break;
		case TYPE_OPERATE_DEL_WEBSITE_TEL:
			helper.handleDelWebsiteToTel(msg.arg1, item);
			break;
		case TYPE_OPERATE_DEL_WEBSITE_CNC:
			helper.handleDelWebsiteToCnc(msg.arg1, item);
			break;
		case TYPE_OPERATE_QUERY_CINEMAS:
			helper.handleQeuryCinemasResult(token.mResultObj, msg.arg1, item);
			break;
		case TYPE_OPERATE_DEL_CINEMAS_TEL:
			helper.handleDelCinemasToTel(msg.arg1, item);
			break;
		case TYPE_OPERATE_DEL_CINEMAS_CNC:
			helper.handleDelCinemasToCnc(msg.arg1, item);
			break;
		case TYPE_OPERATE_QUERY_SITCOMS:
			helper.handleQeurySitcomsResult(token.mResultObj, msg.arg1, item);
			break;
		case TYPE_OPERATE_DEL_SITCOM_TEL:
			helper.handleDelSitcomToTel(token.mResultObj, msg.arg1, item);
			break;
		case TYPE_OPERATE_DEL_SITCOM_CNC:
			helper.handleDelSitcomToCnc(token.mResultObj, msg.arg1, item);
			break;
		default:
			break;
		}
	}
}
使用:
mThread = new UserCenterThread(TAG);
mThread.start();
mHelperHandler = new UserCenterHandler(mThread.getLooper(), this);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值