首页 > 学院 > 开发设计 > 正文

Anroid异步消息机制(Handler、Looper、Message、MessageQueue)以及ThreadLocal运用

2019-11-07 23:20:07
字体:
来源:转载
供稿:网友

在Android中,非主线程不能更新UI(ViewRootImpl在主线程中创建,所以我们要在主线程中更新UI。同理,如果ViewRootImpl在子线程中创建的话,那么也可以在子线程中更新UI,也就是说在哪里更新UI和ViewRootImpl在哪里创建是关联的。默认ViewRootImpl在主线程中创建),这时候我们可以借助Handler来实现(Activiy.runOnUiThread()也可以实现,但原理也是Handler,调用的post(Runnable));但Handler实现机制是什么?见下图所示

从上图,我们可以发现几个重要信息:

1、Handler可以关联多个Looper

2、一个线程只能有一个Looper

3、ThreadLocal是线程内共享的局部变量,这里为了共享Looper实例,以实现唯一性


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表