美文网首页
第10章 Android 的消息机制

第10章 Android 的消息机制

作者: SunnyGL | 来源:发表于2020-12-06 19:53 被阅读0次

我们知道,如果在子线程中更新 UI,那么程序就会抛出异常。 ViewRootImpl 的 checkThread 方法会对操作 UI 的线程做验证,异常也是由此抛出,代码如下所示:

void checkThread() {
    if (mThread != Thread.currentThread()) {
        throw new CalledFromWrongThreadException(
                "Only the original thread that created a view hierarchy can touch its views.");
    }
}

Android 的 UI 控件不是线程安全的,如果在多线程中并发访问可能会导致 UI 控件处于不可预期的状态。如果对 UI 控件加上锁机制,会使 UI 访问的逻辑变得复杂,而且锁机制会降低 UI 的访问效率。所以最简单高效的方法就是采用单线程来管理 UI ,于是 Google 给开发者提供了 Handler 来从任意子线程切换到 UI 线程。

Handler 具体实现细节详见《Android Handler 流程分析与思考》

相关文章

网友评论

      本文标题:第10章 Android 的消息机制

      本文链接:https://www.haomeiwen.com/subject/mooowktx.html