作家
登录

Android面试17个知识点总结宝典

作者: 来源: 2017-12-11 09:06:58 阅读 我要评论

prepare办法为当前哨程创建一个Looper对象,然后启动轮回 
  •             //prepare办法中本质是给ThreadLocal对象创建了一个Looper对象 
  •             //如不雅当前哨程已经创建过Looper对象了,那么会报错 
  •             Looper.prepare(); 
  •             handler = new Handler(); 
  •             //获取Looper对象 
  •             mLooper = Looper.myLooper(); 
  •             //启动消息轮回 
  •             Looper.loop(); 
  •  
  •             //在恰当的时刻退出Looper的消息轮回,防止内存泄漏 
  •             mLooper.quit(); 
  •         } 
  •     }).start();  
  • 主线程中默认是创建了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。

    1. @Override 
    2.    public boolean dispatchTouchEvent(MotionEvent ev) { 
    3.        return super.dispatchTouchEvent(ev); 
    4.    } 
    5.  
    6.    @Override 
    7.    public boolean onInterceptTouchEvent(MotionEvent ev) { 
    8.        return super.onInterceptTouchEvent(ev); 
    9.    } 
    10.  
    11.    @Override 
    12.    public boolean onTouchEvent(MotionEvent event) { 
    13.        return super.onTouchEvent(event); 
    14.    } 

    事宜老是大年夜上往下进行分发,即先达到Activity,再达到ViewGroup,再达到子View,如不雅没有任何视图消费事宜的话,事宜会顺着路径往回传递。个中:

    1. dispatchTouchEvent是事宜的分发办法,如不雅事宜可以或许达到该视图的话,就起首必定会调用,一般我们不会去修改┞封个办法。
    2. onInterceptTouchEvent是事宜分发的核心办法,表示ViewGroup是否拦截事宜,如不雅返回true表示拦截,在这之后ViewGroup的onTouchEvent会被调用,事宜就不会往下传递。
    3. onTouchEvent是最初级的,在事宜分发中最后被调用。
    4. 子View可以经由过程requestDisallowInterceptTouchEvent办法去请求父元素不要拦截。

    留意

    1. 事宜大年夜Activity.dispatchTouchEvent()开端传递,只要没有被停止或拦截,大年夜最上层的View(ViewGroup)开端一向往下(子View)传递。子View 可以经由过程onTouchEvent()对事宜进行处理。
    2. 事宜由父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

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)