关于Android架构组件,Android Architecture Components,使用AAC构建项目

版权声明:本文为Jaiky_杰哥原创,转载请注明出处。This blog is written by Jaiky, reproduced please indicate. https://blog.csdn.net/jaikydota163/article/details/78645012

关于Android架构组件

        Google在Google IO 2017大会期间宣布了一个非常棒的工具,它被称为架构组件,即Android Architecture Components,本文的出发点是假设你已经掌握了Android开发的基本知识,在此基础上你才能看懂这些组件的作用,如果没有,可阅读相关知识后再进行本文的阅读。
在学习了这些新的元素之后,我们可以通过写出一个简单的Demo项目,在那里你可以检查你的学习成果(如果你没有任何AAC开发经验)。 

MVVM + 观察者模式 + Repositories + 架构组件 ?
        不要被这些名词所左右,其实它比第一眼看起来简单。
        Repositories服务 是数据和应用程序其余部分之间的沟通桥梁 。 构建一个Foo特性,即 FooRepository从FooViewModel中提取数据源,同时提供必要的Observables将数据流传输到后者。
        另一方面,ViewModel应该连接Repository和View,这也是业务逻辑所在的地方,就像MVP中的Presenter或者MVC中的Controller一样,但是有一些关键的区别,我们通过扩展框架,以及搭建自己的arch.lifecycle.ViewModel类,它具有一些内部生命周期,使我们的开发减少一些基本的流程,但其实细分流程会更多。
        FooView将保存对相应的FooViewModel实例的引用,这与调用一样简单:
viewModel = ViewModelProviders.of(this).get(FooViewModel.class);

ViewModel对象的范围是在获取ViewModel时传递给ViewModelProvider的Lifecycle。 ViewModel保留在内存中,直到生命周期结束 - 在Activity的情况下,当它被finished; 如果是Fragment的情况下,当它被Detached。

ViewModel
        下一步也是最后一步是订阅ViewModel公开的数据可观察对象,显示进入的数据,并将用户操作报告给ViewModel。就是这样,不需要大量的回调,保持你的视图(一如既往)的逻辑自由,但现在不那么冗长,因此更容易维护。
        与其他模式相比,使用这种结构可以使我们的代码更加可重用/模块化。随着新的Android架构组件编写测试和关注的分离就将变得异常简单,从而实现数据和事件的无缝流动。


        LiveData <T>:是一个数据持有者类,它保留一个值并允许观察这个值。 与常规的observable不同,LiveData符合应用程序组件的生命周期,以便Observer可以指定应该观察的生命周期。
        Android的ViewModel为我们提供了一个生命周期感知组件,而不需要持有对View(例如Activity,Fragment)的引用,这样不容易导致内存泄漏。 但是,它将拥有数据的所有权,因此我们必须把重点放在操作数据和业务逻辑上。

注意:由于ViewModel超出了特定的Activity和Fragment实例,因此它不应该引用View或任何可能持有对Activity Context的引用的类。 如果ViewModel需要Application的Context(例如,查找系统服务),则可以扩展AndroidViewModel类并在构造函数中具有接收Application的构造函数(因为Application类扩展了Context)。


未完,后续将有更多博客和Demo介绍架构组件的其他知识。

声明

欢迎转载,但请保留文章原始出处
作者:Jaiky_杰哥 
出处:http://blog.csdn.net/jaikydota163/article/details/78645012

阅读更多

没有更多推荐了,返回首页