美文网首页
android进阶筑基篇一

android进阶筑基篇一

作者: 靳文超 | 来源:发表于2021-02-13 00:23 被阅读0次

该系列文章从androidx,jetpack开始对安卓技术做一遍更新梳理。因入行较早公司技术又相对比较老,目前技术已经陈旧到再不升级,即使不需要后浪,自己也可以把自己拍死了。技术梳理以Kotlin作为开发语言前提。首先从了解Androidx相关依赖库开始切入。

第一步:需要关注的就是Activity和Fragment

androidx.core库中引入CompnentActivity,作为所有新框架的积累库,拓展了LifecycleOwner和KeyEventDispatcher.Component接口。

androidx.activity库,引用了core中的CompnentActivity,名称相同,作为基类使用,主要实现Lifecycle、ViewModel等jetpack相关框架的集成。

androidx.activity拓展activity-ktx库,添加了两个Kotlin扩展方法,不对整体Activity结构造成影响。

androidx.fragment框架中FragmentActivity使用androidx.activity中CompnentActivity,不再使用系统中自带的Fragment,以及support中Fragment。主要对Fragment进行相关管理。

android.appcompat包中的AppCompatActivity继承自FragmentActivity。主要添加ActionBar等AppCompat相关特性。开发应用时主要继承该Activity.。继承后可使用Jetpack、Appcompat等系列框架特性。应用开发中Fragment主要继承androidx.fragment中Fragment。

第二步:了解了Fragment和Activity的相关关联关系之后就可以开始Jetpack具体组件相关的开发了。最先需要使用和梳理的就是Lifecycle、ViewModel和Livedata。按照谷推荐框架,还需要使用Room框架,目前从关联关系及对项目的框架影响考虑,该框架可分开独立研究,不影响整体使用。其中最基础的是Lifecycle,因viewmodel和livedata对lifecycle有依赖。

首先,研究Lifecycle的使用及源码逻辑。在第一步中已经描述到框架中基础Activity已经实现了Lifecycle相关接口,这其中包括基础Fragment也已经实现相关接口。Lifecycle最主要的组成部分为:LifecycleOwner、LifecycleObserver。原理为使用观察者模式,因Activity及Fragment已经实现了LIfecycleOwner,我们不需要关注该实现步骤,直接将Activity\Fragment认定为被观察者。开发只需要实现观察者即可。实现步骤为:1、创建一个实现了LifecycleObserver接口的类,将需要观察的某个生命周期用注解的方式标注,如:@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)、 @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)、@OnLifecycleEvent(Lifecycle.Event.ON_ANY),2、将该类注册到被观察者中,用于将观察者与被观察者建立关联关系。代码如:getLifecycle().addObserver(XXX) 完成以上步骤即可在被观察者发生相应的生命周期变动时,在观察者类中收到相关生命周期变化的通知。

其次需要梳理Viewmodel,该框架背后的MVVM思想的使用涉及的开发语言范围已经很广泛。在其他开发体系中已经有大量实践。在前端研发及设计中参考数据驱动视图思想及实现方案,已经成为前端研发的必经之路。主要组成部分为ViewModelStoreOwner、ViewModelProvider。其中框架中Activity/Fragment已继承实现ViewModelStoreOwner。该接口持有ViewModelStore,而ViewModelStore持有该页面中的ViewModel。需要使用或者实现VIewModel时,通过ViewModelProvider来实例化一个XXXVIewModel(继承VIewModel)及将其与容器相关联,

java实现方式new ViewModelProvider(getActivity()/this).get(XXXViewModel.class)

kotlin实现方式:by viewModels<XXXViewModel>

该逻辑的实现意味着你可以在容器中找到和使用一份独立的数据而无需担心数据受页面生命周期相关的影响。viewmodel作为view与model之间的桥梁。将model绑定到view的全生命周期中。需要使用数据时直接通过viewmodel获取即可。

最后需要梳理LiveData,同样使用观察者模式,被观察者为LifecycleOwner,框架中已经实现该接口。观察者为LiveData,LiveData中的数据从泛型约束中传入。建立关联关系的方式为1、实例化LiveData、2、liveData.observer(被观察者,观察callback)。当数据发生变化时被观察者通知数据发生变更livedata.setValue(数据变化)。整个原理及实现架构同lifevycle类似。

第三部:代码实战。

以上框架模块均在lifecycle库中。所以放在一起学习,掌握了基本的项目框架组件就可以开始项目实战了。推荐谷歌官方demo,当遇到其他库方法时,可以直接学习了解相关库。新项目引入androidx,在实战过程中,穿插学习其他androidx库。

相关文章

网友评论

      本文标题:android进阶筑基篇一

      本文链接:https://www.haomeiwen.com/subject/zqjdxltx.html