Android⾯试题---AndroidJetpack
1.说说Google新出的Lifecycle框架
将类的⽣命周期⽅法移交到Lifecycle中管理,实现对类的⽣命周期的监听,从⽽在Lifecycle中处理⽣命周期的逻辑代码。这⾥涉及到⼏个对象:
LifecycleObserver接⼝( Lifecycle观察者):实现该接⼝的类,通过注解的⽅式,可以通过被LifecycleOwner类的
addObserver(LifecycleObserver o)⽅法注册,被注册后,LifecycleObserver便可以观察到LifecycleOwner的⽣命周期事件。
LifecycleOwner接⼝(Lifecycle持有者):实现该接⼝的类持有⽣命周期(Lifecycle对象),该接⼝的⽣命周期(Lifecycle对象)的改变会被其注册的观察者LifecycleObserver观察到并触发其对应的事件。
Lifecycle(⽣命周期):和LifecycleOwner不同的是,LifecycleOwner本⾝持有Lifecycle对象,LifecycleOwner通过其Lifecycle getLifecycle()的接⼝获取内部Lifecycle对象。
State(当前⽣命周期所处状态):⼏种事件状态。
Event(当前⽣命周期改变对应的事件):当Lifecycle发⽣改变,事件状态的回调event。
2. Android Jetpack
android jetpack是google专门为开发者快速开发app的⼀套组件,快速搭建mvvm框架的实现,其中包括Lifecyle、LiveData、ViewModel、Room、DadaBinding、Navigation、Paging、WorkManager等⼀系列优秀的框架。
Lifecycle:实现和activity、fragment⽣命周期感知的框架,实现数据层和view层销毁的时候解绑。原理是Lifecycler为每个活动组件添加了⼀个没有界⾯的Fragment,利⽤Fragment周期会根据活动声明周期变化的特性实现的特性,从⽽实现⽣命周期的感知,然后根据注解的Event查执⾏相应的⽅法。
LiveData:提供了⼀种数据改变的同时,主动去告诉ui,让ui层做出相应的逻辑判断。原理是内部保存了LifecycleOwner和Observer,利⽤LifecycleOwner感知并处理声明中期的变化,Observer在数据改变时遍历所有观察者并回调⽅法。
ViewModel:它是我们view层和model层的桥梁,是数据驱动界⾯的关键地⽅,也是我们ui层在数据丢失的情况下,viewModel还能继续保持原有的数据,原理是将数据保存到ViewModel中,然后为活动中添加⼀个HolderFragment,HolderFragment中保存了ViewStore的实例,ViewStore中使⽤Map保存了ViewModel,从⽽在活动重新创建时获取到原来的ViewModel。安卓app开发用什么框架
Room:是model层本地数据库的框架,通过实体映射到对应的db表结构,将实体映射到db关系型数据库⾥⾯。跟greendao差不多,room数据库版本升级数据迁移⽐greendao迁移要⿇烦,个⼈还是⽐较喜欢greendao来实现本地数据库。 DadaBinding:是⼀个可以通过在xml布局⽂件中实现ui逻辑的框架,并且它的ui层和数据层双向驱动还是挺不错的。
Navigation:是后⾯新出来的可视化管理fragment的组件,通过在xml中配置fragment之间跳转的关系。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论