Android架构Android开发Android技术知识

基于Android Architecture Component

2018-04-23  本文已影响142人  谢长意

       1.最近看了一些文章 理解Android Architecture Components系列谷歌官方地址),就想自己重新搭建一套框架来巩固新知识。

        2.源码地址 mvvm是基于databinding实现的,所以这里我们也是基于databinding来搭建的。这里的viewModel将会和activity的生命周期绑定。

        3.主要讲一下使用方法以及简单的databinding体验,当然你也可以下载源码修改或者自己重新搭建自己的框架。

       此框架kotlin版本的项目实战 kotlin编写仿iOS网易云音乐的音乐播放器

        首先新建一个空项目。

第二步 集成mvvm的框架库  implementation 'com.kotle:mvvmlib2:1.0.1'

依赖库

添加databindind支持

在app的android下面添加

然后我们准备工作已经完成,可以开始开发了。

第三步 新建一个activity类,一个viewModel类,一个model类

为什么新建这几个类,看谷歌详细介绍

不想看的话,我就用自己的理解简单介绍下:

activity:这个不用多介绍了

viewModel:与setContentView()的xml文件实现双向绑定,以及一些逻辑控制

model:主要用于提供数据,比如是从数据库获取还是从网络获取。

model类继承BaseNetWork:

代码示例

viewModel类继承BaseViewModel:,并重写构造函数和实现抽象方法。

activity类:在修改activity类之前,需要修改一下对应的xml文件如下,至于为什么修改这样,是属于dataBinding的介绍,目前先不讲。有兴趣的可以看一下别人的介绍

xml截图

设置完xml文件之后,dataBinding会自动生成一个类,根据layout文件名来命名(比如 activity_main.xml,对于类ActivityMainBinding)

然后让activity继承BaseMvvmActivity,并传入两个泛型,一个是viewModel,一个是ActivityMainBinding

activity类

然后启动项目看一下打印日志

日志截图

实验证明,你不需要在activity里面手动调用viewModel,它会随着activity的生命周期来创建和销毁。

下面介绍viewModel向activity传入数据。

在viewModel新建一个变量

在Activity接收这个值,并观察是在什么时候接收的

Activity类

再看一下打印日志:

日志内容

明明是在oncreate()设置的值,为什么是在onstart()之后才收到呢?这个就是MutableLiveData的作用,发送的时间不管在什么时候,activity总是在onstart()之后接收,并且在界面不可见的时候也不会接收到数据。

总结一下:

在Activty类中,不需要findViewById,一切用父类的getBind()来操作,对于viewModel对象可以通过getViewModel()来获取。

在ViewModel类中,获取NetWork对象使用getNetWork(),并且可以通过getApplication()拿到全局的application。

还有不懂得可以评论,大家一起探讨。

 此框架kotlin版本的项目实战 kotlin编写仿iOS网易云音乐的音乐播放器

上一篇 下一篇

猜你喜欢

热点阅读