1.Handler分发机制是什么?Handler分发机制就是handler,looper,message之间的关系。总的来说就是handler是looper和message的中间桥梁。
Handler创建消息。Android里面每一个消息都要交给指定的handler处理,这里引入了Message Queue(消息队列)。创建消息的时候,会先访问MQ,看它里面有没有这个消息,如果有就会取出来,没有就会创建。MQ的好处就是,不用的消息会存放在MQ里面,不会被当做垃圾回收。减少了消息的回收次数,提高了消息的复用。
Handler发送消息。Handler里面存放了looper与MQ的引用,子线程可以通过handler把消息发送给UI_MQ里面。当一个Android程序启动的时候就会创建UI线程(主线程),会创建一个Handler对象,Handler对象会去获取UI线程对应的的looper对。,如果没有获取到就会通过ThreadLocal创建一个looper对象,然后再创建MQ。如果获取到了,就直接使用。
Handler处理消息。handler把消息发送到UI_MQ里面,主线程通过looper循环查询UI_MQ,消息队列里面是不是有消息没有处理,如果查询到没有处理的消息,就发送给对应的handler处理。
2.内存泄漏。内存泄漏是指由于疏忽或者过错没有释放已经不再使用的内存。内存泄漏的解决办法:(1)养成良好的编码习惯,在涉及到使用内存的代码块的时候一定要记得释放内存,特别是数组的使用,用完之后记得释放数组。delete掉。(2)由内存泄漏引申出的内存溢出。内存溢出是指你分配的内存超出了系统能给的范围。很多时候内存溢出都是drawable对象,多次重复执行一行代码,代码执行完,变量没有释放。现在这样的很少,现在的手机内存都很大。
3.动画Animation。渐变动画(View Animation),属性动画(Property Animation),drawable动画。渐变动画分平移(translate),旋转(rotate),缩放(scale),不透明度(Alpha)。drawable动画就是把图片一张一张在规定时间显示出来。最后就是属性动画,通过实现属性动画类Obejectanimation的方法,设置时间,动画类型(如抛物线类型等等),差值器Interpolator,动画监听。
4.ontouch事件的分发机制。ontouch事件的两个主角就是viewGroup与view。activity的的ontouch事件就是调用的viewGroup与view处理onTouch事件的方法。viewGroup处理onTouch事件有三个方法:onInterecptonTouchEvent,dispatchOntouchEvent,onTouchEvent。view就只有两个dispatchOntouchEvent和onTouchEvent。ontouch事件是以递归的方式一层一层向下传递,哪一层拦截了就是哪一层处理。即哪一层的dispatchOntouchEvent的返回的boolean值为true,ontouch事件向下传递就会发生中断,不会向下传递。后面的view就接收不到ontouch事件。dispatchOntouchEvent这个方法只执行分发,并不处理事件,处理事件都是在onTouchEvent方法里面实现。ontouch事件是由一个down,一个up,和若干个move组成。onInterceptTouchEvent两个作用:1.是用来拦截down事件的分发。2.阻止up和move事件向目标view传递,使得目标view所在的viewgroup捕获up和move事件。
Android面试必备
最新推荐文章于 2024-05-06 18:56:53 发布