主线程中默认是创建了Looper并且启动了消息的轮回的,是以不会报错:
应用法度榜样的人口是ActivityThread的main办法,在这个办法琅绫擎会创建Looper,并且履行Looper的loop办法来启动消息的轮回,使得应用法度榜样一向运行。
子线程中可以经由过程Handler发送消息给主线程吗?
7、事宜传递机制以及自定义View相干
Android中View的机制主如果Activity的显示,每个Activity都有一个Window(具体在手机中的实现类是PhoneWindow),Window以下有DecorView,DecorView下面有TitleVie以及ContentView,而ContentView就是我们在Activity中经由过程setContentView指定的。
可以。有时刻出于营业须要,主线程可以向子线程发送消息。子线程的Handler必须按照上述办法创建,并且接洽关系Looper。

事宜传分发机制

ViewGroup有以下三个与事宜分发的办法,而View只有dispatchTouchEvent和onTouchEvent。
- @Override
- public boolean dispatchTouchEvent(MotionEvent ev) {
- return super.dispatchTouchEvent(ev);
- }
- @Override
- public boolean onInterceptTouchEvent(MotionEvent ev) {
- return super.onInterceptTouchEvent(ev);
- }
- @Override
- public boolean onTouchEvent(MotionEvent event) {
- return super.onTouchEvent(event);
- }
事宜老是大年夜上往下进行分发,即先达到Activity,再达到ViewGroup,再达到子View,如不雅没有任何视图消费事宜的话,事宜会顺着路径往回传递。个中:
- dispatchTouchEvent是事宜的分发办法,如不雅事宜可以或许达到该视图的话,就起首必定会调用,一般我们不会去修改┞封个办法。
- onInterceptTouchEvent是事宜分发的核心办法,表示ViewGroup是否拦截事宜,如不雅返回true表示拦截,在这之后ViewGroup的onTouchEvent会被调用,事宜就不会往下传递。
- onTouchEvent是最初级的,在事宜分发中最后被调用。
- 子View可以经由过程requestDisallowInterceptTouchEvent办法去请求父元素不要拦截。
留意
- 事宜大年夜Activity.dispatchTouchEvent()开端传递,只要没有被停止或拦截,大年夜最上层的View(ViewGroup)开端一向往下(子View)传递。子View 可以经由过程onTouchEvent()对事宜进行处理。
- 事宜由父View(ViewGroup)传递给子View,ViewGroup 可以经由过程onInterceptTouchEvent()对事宜做拦截,停止其往下传递。
推荐阅读
Github年度报告盘点:TensorFlow无疑是最大赢家!
开辟者大年夜赛路演 | 12月16日,技巧立异,北京不见不散 以前十年,Github所有开辟者共享2500万公共仓库的代码,用户遍布200多个国度,应用人数达到了2400万,有6700万Repo,新增了10亿提>>>详细阅读
本文标题:Android面试17个知识点总结宝典
地址:http://www.17bianji.com/lsqh/39609.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示