Android应用开发Android8.1 推荐设计架构 基本示例代码分析
白羽 2018-11-14 来源 :网络 阅读 1273 评论 0

摘要:本文将带你了解Android应用开发Android8.1 推荐设计架构 基本示例代码分析,希望本文对大家学Android有所帮助。

    本文将带你了解Android应用开发Android8.1 推荐设计架构 基本示例代码分析,希望本文对大家学Android有所帮助。



直接整个简单的viewmodel加上一个livedata,屁都没测试出来。 还得看个完整的例子。
我们也可以在Android studio里面新建一个sample,最底下的选项。
这个软件最后的效果是这样。

挨个文件看:
AppExecutors 里边弄了几个线程池用来执行耗时的操作。通过getXXX方法就可以获得相应的池子。
BasicApp 这个是Application,新建的时候就初始化了线程池。还定义了类似于全局方法的两个方法可以获取database和datarepository
DataRepository 这个是获取数据用的,里边维护了一个products的list的livedata。 一个数据库实例,注意这个地方数据库是作为参数传进来的,在学习设计模式的时候一定要注意这些细节。 里边有一些方法:1.获取所有的产品,直接返回维护的list livedata 2.在数据库中load指定产品。3.在数据库中load指定的产品详情。
对我来说,里边最困惑的地方是这里:
mObservableProducts = new MediatorLiveData<>();         mObservableProducts.addSource(mDatabase.productDao().loadAllProducts(),                productEntities -> {                    if (mDatabase.getDatabaseCreated().getValue() != null) {                        mObservableProducts.postValue(productEntities);                    }                });
所以要去查清楚!!
LiveDatasubclass which may observe otherLiveDataobjects and react onOnChangedevents from them.
这句话直接说就是这个MediatoLiveData是LiveData的子类,他可以监控其他的livedata并且会在他们变化的时候调用onchanged回调。所以这里从数据库中加载了所有的产品,这个加载出来的是个livedata, 咱们这里的observableProducts就监控这个数据,如果这个数据变了,就把自己的指设为改变后的值。
接下来看看db文件夹下边的,这里边好说,我对Room还不大了解,但是这不妨碍去理解这个文件夹的结构。 对于appdatabase 要在里边使用线程创建数据库。 还hack了一把,用livedata来标志是否创建成功了。 这个数据库的整体接口没有太多,维护了两个Dao,可以通过一个事务去存储所有的数据。
我又想起来,这个repository里边获取数据为啥用个mediatorLivedata,因为一开始livedata里边没数据呀,没数据怎么去监控,应该是这么个问题,一会需要试一下。
其他的实例不看了,重点是查询的数据返回的都是LiveData。
看ViewModel ,这里的ProductViewModel 需要一个参数:application。 这里边用了一个databind的东西,这个暂时不管是什么了。 另外一个model里边参数更多,定义了一个Factory。 好多地方都说这个注入 Inject 好像是不需要参数就可以构造对象出来,让耦合度变的很低,这个要注意,不管早晚都要去看一下。
剩下的就是adapter 啥的。 好像也没啥东西,就是文档里边说的,但是就是能够正确的运行。 返回之前的mediatorlivedata的测试,先测试完这个吧。
是我蠢了,根本就没吧fragment放到栈里边去,事实证明livedata也是可以的。mediatorLivedata要分情况看待吧。这里数据库返回的也是livedata,我想看看数据库插入之后会不会引起数据的变化。 
不敢相信,真的可以哎。 接下来有必要再来一波livedata的解析了。    


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved