一.Android事件封发机制
事件的传递规则
一个点击事件,或者说触摸事件,被封装为了一个MotionEvent。事件的分发主要由三个重要的方法来完成:
1、分发:dispatchTouchEvent;事件的分发
此方法用来处理事件的分发,当事件传递给当前view时,首先就是通过调用此方法来进行传递的,如果当前view锁包含的子view的dispatchTouchEvent方法或者当前view的onTouchEvent处理了事件, 通常返回true, 表示事件已消费。如果没有处理则返回false。
2、拦截:onInterceptTouchEvent;事件的拦截
此方法用来判断某个事件是否需要拦截,如果某个view拦截了此事件,那么同时个事件序列中,此方法不会被再次调用,因为会把当前view赋值给mFirstTouchTarget对象(原本为null),后续父必问判断mFirstTouchTarget != null时,就会去调用它的onTouchEvent方法,交给mFirstTouchTarget处理事件。
3、处理:onTouchEvent;事件的处理
用来处理事件,如果事件被消耗了,通常就返回true, 如果不做处理,则发挥false,并且在同一个时间序列中,当前view不会再接受到事件。
二.rxjava线程切换原理(待了解)
1、subscribeOn() 控制事件产生的线程,即onSubscribe.call()执行的线程
2、observeOn()控制事件消费的线程,即(subscriber.onNext())执行的线程
handle来处理线程切换。
三.okhttp 请求拦截
1.添加addInterceptor方法拦截:拦截请求,获取到该次请求的Request request=chain.request();// 执行本次网络请求操作,返回response信息Response response=chain.proceed(request)
四.布局控件新
1.ConstraintLayout(约束布局):减少布局层级和过度绘制
2.RecyclerView
五.udp和tcp的请求头有什么区别
六.Android的绘画机制
七.多线程并发。
使用线程池和队列处理。
八.socket优化
九.view重写的重要方法
测量: onMeasure(): 测量自己的大小,为正式布局提供建议
布局: onLayout(): 使用layout()函数对所有子控件布局
绘制: onDraw(): 根据布局的位置绘图
十.kotlin 协程
十一.jetpack
十二.jetpack之
ViewModel
十二.==与equal的区别及源码
equal是比较两个对象内容是否相等,==是比较两者是否是同一个内存地址。
十三.说一个你熟悉的三方包实现原理(eventbus、glide、Arouter之类的)
equal是比较两个对象内容是否相等,==是比较两者是否是同一个内存地址。