简单聊聊android architecture componets -凯发k8国际

0顶
1踩

简单聊聊android architecture componets

2017-05-19 17:25 by 副主编 jihong10102006 评论(0) 有4988人浏览
google io大会进行中,本次大会android最大的新闻当属android o以及kotlin被官方认可。我发现了原来还有发布官方的架构库,以及推荐使用指南,分享给大家。

架构原则
  • 关注分离
  • 模型驱动ui,优先持久化模型
新架构

如上图所示,为新的架构模式:

activity/fragment

ui层,通常是activity/fragment等

监听viewmodel,当viewmodel数据更新时刷新ui

监听用户事件反馈到viewmodel。

viewmodel

持有保存,或者想repository来获取ui层需要的数据

响应ui层的事件,执行响应的操作

响应变化,并且通知到ui层

repository

app的完全的数据模型,viewmodel交互的对象

提供简单的数据修改和获取的接口

配合好网络层数据的更新与本地持久化数据的更新,同步等

data source

包含本地的数据库等,网络api等

这些基本上和现有的一些mvvm,以及clean架构的组合比较相似,不过谷歌提供了一些新的类库来帮助我们实现这个架构。

谷歌的新玩具

本地io大会谷歌提供了新的类库来实现这个功能,小标题我写新玩具是因为这个库目前还在alpha1版本,官方只建议在个人小项目中使用。

这个类库包含如下一些东西:

lifecycle

android声明周期的回调,帮助我们将原先需要在onstart()等生命周期回调的代码可以分离到activity或者fragment之外。

livedata

一个数据持有类,持有数据并且这个数据可以被观察被监听,和其他observer不同的是,它和lifecycle是绑定的。

viewmodel

用于实现架构中的viewmodel,同时是与lifecycle绑定的,使用者无需担心生命周期。方便在多个fragment之前分享数据,比如旋转屏幕后activity会重新create,这时候使用viewmodel可以方便使用之前的数据,不需要再次请求网络数据。

room

谷歌推出的一个sqlite orm库,不过使用起来还不错,使用注解,极大简化数据库的操作。

框架补充

工具库帮助我们进行开发,如果不满足官方的库其实可以自己实现。比如livedata在某些情况下可使用rxjava代替。

​ 数据层官方推荐使用room或者realm或者其他sqlite orm等都可以,同时从某些方面看room风格很像retrofit。网络请求也被推荐使用retrofit。

​ 各层之间的耦合推荐使用服务发现(service locator)或者依赖注入(di),会上推荐了dagger。

测试

​ 各层之间的合理分层,为测试提供极大的方便。

ui层测试

​ 使用android instrumentation test,借助espresso库进行,借助mock的viewmodel,可以专注于测试ui

viewmodel 测试

​ 使用mock的repository来提供数据,使用junit测试,因为不涉及ui,运行速度会快很多。

repository测试

​ 数据层mock一些数据返回给repository,使用junit测试即可

数据层测试

​ 使用junit测试

​ 数据库,使用room的话官方提供了测试支持,在测试时候创建内存数据库即可。

​ 网络请求,使用mockwebserver来提供假的服务端即可。

再补一个会议时的项目结构图,以一个用户信息页面为例。

最后的话

目前这个库还不完善,api可能随时会变,公司项目不建议使用,个人项目可以尝鲜。另外对于已经有的项目,也不建议更换到现在的架构。不过这个项目的好的思想可以借鉴到我们自己的项目中来,同时这个库的方式我们其实可以借助其他的开源库来实现。
本文不再贴相关代码,具体各个库的使用请查看官方文档
附上官方的demo项目:
  • 大小: 131.6 kb
  • 大小: 100.3 kb
来自:
0
1
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • android clean架构用kotlin编写的一个基本示例android应用程序,以非常简单的方式了解clean architecture。 只需克隆,构建,运行和理解即可。建筑学结构截屏二手图书馆:随意提交任何类型的问题和建议,以提高编码...

  • 浅谈android architecture components浅谈android architecture components 简介 android architecture components gradle 集成 lifecycles livedata transformations viewmodel room entities entity的参数 primary...

  • 上一篇咱们聊到了android architecture components系列之lifecicle,优雅解决了activity生命周期方法的分离。不过也仅此而已,它并不是一种app架构方案,而我们今天的主角livedata和viewmodel则是一种官方的、稳定的...

  • 我所能理解的 android architecture components 写在前面: android architecture components 是 google 2017 年 i/o 大会提出的一种架构凯发k8国际娱乐官网入口的解决方案。在此之前,android 应用大多数以 mvc mvp mvvm 等比较常见的架构...

  • android architecture components是谷歌在google i/o 2017发布的。官方的描述: a new collection of libraries that help you design robust testable and maintainable apps. 全新的库集合,可帮助您设计稳健...

  • android jetpack components of lifecycle 学习笔记 android jetpack components of livedata 学习笔记 android jetpack components of viewmodel 学习笔记 都说天下文章一大抄。不过我不担心,我从来不抄袭...

  • architecture components lifecycle 是 2107 年 google 大会推出来的,它属于 architecture compoment 里面的一个组件,它可以干什么用呢? 简单得来说,它可以用来检查 activity 的生命周期,而不必强依赖 ...

  • 在android架构组件基础上,融入kotlin 协程 retrofit,模拟网络,全面快速开发。 navigation navcontroller在 navhost 中管理应用导航的对象,沿导航图中的特定路径导航至特定目标,或直接导航至特定目标。 首先,...

  • 关于jetpackjetpack是一个类库(libraries)、工具(tools)、帮助快易开发构建令人满意的android app的指导(architectural guidance)集合,它提供了通用的基础代码(code),这样你可以专注于让你app与众不同的工作。...

  • 写给 android 开发者的混淆使用手册 - android - 掘金 本文转自:点击打开链接 毫无疑问,混淆是打包过程中最重要的流程之一,在没有特殊原因的情况下,所有 app 都应该开启混淆。 首先,这里说的的混淆其实是包括了...

  • 拿过省大学生数学竞赛三等奖,毕业后自学 android 开发,写了近三年博客,热爱写代码 =分割线= 英文简历 =分割线= lisi phone: 86 123-4567-8910 email:lisi623@163.com blog:https://lisi.com github:...

  • 也有朋友想了解新加坡it现状和薪酬情况,我觉得三言两语可能无法完全讲清楚,就干脆写几篇文章来详细聊聊。 新加坡互联网发展程度比不了美国及国内,公司也没有美国和国内那么多, 没有硅谷的巨头faang(facebook,...

  • 活动信息主题:android 11 meetup: kotlin 协程和 jetpack architecture components时间:2020年7月25日 14:00 - 17:...

  • 昨天,上家公司hr问我有没有认识的android工程师推荐一下,薪资待遇12-20k区间,聊完之后,我差点冲动去报个培训班,重新开始进入这个行业。最后,我被现实拉回了现实。不过我了解了一下android工程师的薪资待遇以及...

  • 写给 android 开发者的混淆使用手册 - android - 掘金 本文转自:点击打开链接 毫无疑问,混淆是打包过程中最重要的流程之一,在没有特殊原因的情况下,所有 app 都应该开启混淆。 首先,这里说的的混淆其实是包括...

  • 先来看看android组件化需要实现的目标按照业务逻辑划分模块项目模块能够单独启动测试能够根据需求引入或删除某些业务模块通过不同模块的组合,组成不同的app对于第一点:需要根据技术架构和业务架构来划分模块,这里...

  • 管理系统是一种通过计算机技术实现的用于组织、监控和控制各种活动的软件系统。这些系统通常被设计用来提高效率、减少错误、加强安全性,同时提供数据和信息支持。以下是一些常见类型的管理系统: 学校管理系统: 用于学校或教育机构的学生信息、教职员工信息、课程管理、成绩记录、考勤管理等。学校管理系统帮助提高学校的组织效率和信息管理水平。 人力资源管理系统(hrm): 用于处理组织内的人事信息,包括员工招聘、培训记录、薪资管理、绩效评估等。hrm系统有助于企业更有效地管理人力资源,提高员工的工作效率和满意度。 库存管理系统: 用于追踪和管理商品或原材料的库存。这种系统可以帮助企业避免库存过剩或不足的问题,提高供应链的效率。 客户关系管理系统(crm): 用于管理与客户之间的关系,包括客户信息、沟通记录、销售机会跟踪等。crm系统有助于企业更好地理解客户需求,提高客户满意度和保留率。 医院管理系统: 用于管理医院或医疗机构的患者信息、医生排班、药品库存等。这种系统可以提高医疗服务的质量和效率。 财务管理系统: 用于记录和管理组织的财务信息,包括会计凭证、财务报表、预算管理等。财务管理系统

  • gb2312字符集 作用:国家简体中文字符集,兼容ascii。 位数:使用2个字节表示,能表示7445个符号,包括6763个汉字,几乎覆盖所有高频率汉字。 范围:高字节从a1到f7, 低字节从a1到fe。将高字节和低字节分别加上0xa0即可得到编码。 gbk字符集 作用:它是gb2312的扩展,加入对繁体字的支持,兼容gb2312。 位数:使用2个字节表示,可表示21886个字符。 范围:高字节从81到fe,低字节从40到fe。 gb18030字符集 作用:它解决了中文、日文、朝鲜语等的编码,兼容gbk。 位数:它采用变字节表示(1 ascii,2,4字节)。可表示27484个文字。 范围:1字节从00到7f; 2字节高字节从81到fe,低字节从40到7e和80到fe;4字节第一三字节从81到fe,第二四字节从30到39。

  • 毕业设计,安卓app,基于java开发的学生成绩课件管理系统app,包括pc端和安卓anroid手机app,内含java完整源码 安卓andriod学生成绩课件管理系统 系统开发环境: windows myclipse(服务器端) eclipse(手机客户端) mysql数据库 服务器也可以用eclipse或者idea等工具,客户端也可以采用android studio工具! 系统客户端和服务器端架构技术: 界面层,业务逻辑层,数据层3层分离技术,mvc设计思想! 服务器和客户端数据通信格式:json格式,采用servlet方式 【服务器端采用ssh框架,请自己启动tomcat服务器,hibernate会自动生成数据库表的哈!】 hibernate生成数据库表后,只需要在admin管理员表中加个测试账号密码就可以登录后台了哈! 下面是数据库的字段说明: 班级: 班级编号,班级名称,开办日期,班主任 学生: 学号,登录密码,所在班级,姓名,性别,出生日期,学生照片,联系电话,家庭地址 老师: 教师编号,登录密码,姓名,性别,出生日期,联系电话,邮件,地址,

global site tag (gtag.js) - google analytics
网站地图