CheckThread

知乎1578赞:Android 中为什么需要 Handler?

我们两清 提交于 2020-11-18 17:43:45
要理解 Handler,就得先理解 Android 的 Message 机制. 这里以用户滑动微信朋友圈为例,讲解一下 Android 的 Message 机制是怎么运行的,Message 机制中的各个核心组件都做了什么 Message 产生 用户滑动屏幕,产生了一系列 input 事件 (一个 Down 事件,若干个 Move 事件,一个 Up 事件),这些事件被系统包装成了一系列 Message(一个 Down Message,若干个 Move Message,一个 Up Message) Message 是用来传递信息的,上述 Message 中就包含了这些 input 事件的信息,比如 x 坐标,y 坐标。 MessageQueue 存放 Message Message 产生后,有一个问题就是这些 Message 怎么发给应用?我要滑动朋友圈,那么这些个 Message 就得传给微信,让微信去处理,微信将这些事件给到朋友圈的 List 控件,让 List 产生新内容,并且实现上下滑动。 首先想到的能不能直接把这些 Message 给到朋友圈的 List 控件(SystemServer 可以直接 Binder 发给 List 控件),可以是可以,但是麻烦;SystemServer 直接给朋友圈的 List 控件发 input message,那 SystemServer

Android UI 线程更新UI也会崩溃???

空扰寡人 提交于 2020-04-22 04:54:39
本文已经授权公众号「鸿洋」原创首发。 大家好,我是鸿洋。 上个周末是双休,我决定来颠覆一下大家的认知。 在平时的Android开发中,如果一个新手遇到一个这样的错: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:8066) at android.view.ViewRootImpl.requestLayout(ViewRootImpl.java:1297) at android.view.View.requestLayout(View.java:23147) 你作为一只老鸟,嘴角露出一丝微笑: “小兄弟,你这个是没有在UI线程执行UI操作导致的错误,你搞个UI线程的handler.post一下就好了”。 但是… 我今天要说,真是是只有UI线程才能更新UI吗? 你作为一只老鸟,肯定立马脑子里闪过: 我知道你这文章写啥了,又要在Activity#onCreate,去搞个线程执行TextView#setText,然后发现更新成功了,是不是?

Android UI 线程更新UI也会崩溃???

会有一股神秘感。 提交于 2020-04-20 09:44:49
本文已经授权公众号「鸿洋」原创首发。 大家好,我是鸿洋。 上个周末是双休,我决定来颠覆一下大家的认知。 在平时的Android开发中,如果一个新手遇到一个这样的错: android.view.ViewRootImpl $CalledFromWrongThreadException : Only the original thread that created a view hierarchy can touch its views. at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:8066) at android.view.ViewRootImpl.requestLayout(ViewRootImpl.java:1297) at android.view.View.requestLayout(View.java:23147) 复制代码 你作为一只老鸟,嘴角露出一丝微笑: “小兄弟,你这个是没有在UI线程执行UI操作导致的错误,你搞个UI线程的handler.post一下就好了”。 但是... 我今天要说,真是是只有UI线程才能更新UI吗? 你作为一只老鸟,肯定立马脑子里闪过: 我知道你这文章写啥了,又要在Activity#onCreate,去搞个线程执行TextView#setText,然后发现更新成功了,是不是

View之invalidate,requestLayout,postInvalidate

你离开我真会死。 提交于 2019-12-09 18:57:59
目录介绍 01.invalidate,requestLayout,postInvalidate区别 02.invalidate深入分析 03.postInvalidate深入分析 04.requestLayout深入分析 05.ViewRootImpl作用分析 06.这几个方法总结 好消息 博客笔记大汇总【16年3月到至今】,包括Java基础及深入知识点,Android技术博客,Python学习笔记等等,还包括平时开发中遇到的bug汇总,当然也在工作之余收集了大量的面试题,长期更新维护并且修正,持续完善……开源的文件是markdown格式的!同时也开源了生活博客,从12年起,积累共计N篇[近100万字,陆续搬到网上],转载请注明出处,谢谢! 链接地址: https://github.com/yangchong211/YCBlogs 如果觉得好,可以star一下,谢谢!当然也欢迎提出建议,万事起于忽微,量变引起质变! 01.Java基础问题(19个) 02.Java面向对象问题(10个) 03.Java数据结构问题(20个) 04.JavaIO流问题(6个) 05.java多线程问题(19) 06.Java虚拟机问题(10个) 07.Java类加载问题(8个) 08.Java反射问题(6个) 10.Java异常问题(9个) 01.requestLayout