淘宝客户端一面(第二次)

不得不说,不愧是淘宝,面的真的好难。
1、线程池底层创建的原理
2、lifecycle的原理
    lifecycle是一种观察者设计模式,第一步是要注册观察者,观察者可以有多个,当被观察者生命周期变化的时候就轮询所有的观察者,把生命周期变化的事件一个一个分发给观察者。注册观察者是通过LifecycleRegistry实现的,通过addabserver函数添加到一个map容器里面。在activity里面绑定了一个空的Fragment感知和分发生命周期,Activity的生命周期执行的时候会对应的执行ReportFragment的生命周期方法。ReportFragment在生命周期方法中通过调用dispatch(Lifecycle. Event)方法分发的生命周期状态, 最终调用对应Activity的LifecycleRegistry对象的handleLifecycleEvent方法完成生命周期的分发。lifecycle中定义了状态机state,通过状态机我们就知道被观察者是因为执行了哪个生命周期导致了State状态发生了变化。在handleLifecycleEvent方法中先把执行生命周期后的state状态同步到lifecycle中。判断mState被观察者处于的状态,是不是比观察者保存的状态小,判断被观察者执行了什么生命周期方法,调用backwardPass或者forwardPass函数。然后遍历整个map容器中的观察者,调用观察者的diapatchEvent方法就能让观察者的onStateChange方法得到执行

3、handler postdeleay原理
    延时消息会和当前消息队列里的消息头的执行时间对比,如果比头时间靠前,则会成为新的消息头,否则就依次遍历,寻找合适的位置插入延时消息。
4、HandlerThread原理
全部评论

相关推荐

评论
1
5
分享
牛客网
牛客企业服务