• UI controllers (activities and fragments) 中代码越少越好,不应该自己去请求数据,而是用ViewModel来更新数据,并且监听LiveData来更新UI
  • UI controllers 中的UI写成数据驱动的,也就是UI controller需要做的只有当数据变化时更新view,或者当用户有输入行为时给ViewModel反馈
  • 把数据逻辑放在ViewModel中,ViewModel存在的目的是将UI controller 与应用内其他的一切分离。ViewModel的作用并不是拿数据(如从网络上,从数据库),而是告诉相应的组件它该做什么,然后给UI controller 提供返回的数据
  • 可以使用DataBinding来保证UI controllers与view之间的代码清晰度。如果我们要更新ui,那么避免不了的就是在UI controllers中写更新的代码,java中当然也可以用Butter Knife之类的东西来打成类似的目的
  • 如果UI比较复杂,可以创建Presenter来进行UI 更新,有的时候可能会多写出一些代码,但是可以易于测试
  • ViewModel永远不要持有View或者Activity的引用,可能会导致内存泄漏

【Android】Architecture Components最佳实践--Lifecycles的更多相关文章

  1. 安卓构架组件——概述 Android Architecture Components

    谷歌官文文档地址:https://developer.android.google.cn/topic/libraries/architecture 安卓构架组建是库的集合:帮助你设计健壮的.易测试的. ...

  2. App 组件化/模块化之路——Android 框架组件(Android Architecture Components)使用指南

    面对越来越复杂的 App 需求,Google 官方发布了Android 框架组件库(Android Architecture Components ).为开发者更好的开发 App 提供了非常好的样本. ...

  3. Android框架式编程之Android Architecture Components

    1. 当前Android开发面临的问题 Android开发不同于传统的桌面程序开发,桌面程序一般都有唯一的快捷方式入口,并且常作为单进程存在:而一个典型的Android应用通常由多个应用组件构成,包括 ...

  4. (转)Android开发:性能最佳实践-管理应用内存

    翻自:http://developer.android.com/training/articles/memory.html 在任何软件开发环境中,RAM都是宝贵的资源,但在移动操作系统中更加珍贵.尽管 ...

  5. Android Architecture Components

    https://developer.android.com/topic/libraries/architecture/index.html ViewModel 有LiveData Activity 监 ...

  6. Android UX & UI 最佳实践: 设计有效的导航

    Best Practices for User Experience & UI Designing Effective Navigation 导航:帮助用户有效直观地使用你的应用. Plann ...

  7. 执行Android后台任务的最佳实践

    灵活执行后台任务可以帮助提升应用性能,并最小化电量损耗. Android后台任务主题包含以下三个子主题: 1. 在IntentService中执行后台任务: 2. 使用CursorLoader在后台加 ...

  8. Android后台处理最佳实践(Best Practices for Background Jobs)

    本课将告诉你如何通过后台加载来加速应用启动和降低应用耗电. 后台跑服务 除非你做了特殊指定,否则在应用中的大部分前台操作都是在一个特殊的UI线程里面进行的.这有可能会导致一些问题,因为长时间运行的操作 ...

  9. Android+PHP开发最佳实践

    本书以一个完整的微博应用项目实例为主线,由浅入深地讲解了Android客户端开发和PHP服务端开发的思路和技巧.从前期的产品设计.架构设计,到客户端和服务器的编码实现,再到性能测试和系统优化,以及最后 ...

随机推荐

  1. [Luogu1462]通往奥格瑞玛的道路

    题目大意: 一个n个点,m条边的图,每个边有一个边权,每个点也有一个点权. 现在要找一条从1到n的路径,保证边权和不超过b的情况下,最大点权尽量小. 问最大点权最小能是多少? 思路: 二分答案,然后D ...

  2. Maven打war包时,添加本地jar包

    1.在项目根目录中新建lib文件夹,添加jar包 2.在pom.xml文件中添加dependency <dependency> <groupId>com.oracle</ ...

  3. Mac下JAVA开发环境搭建

    最近开始学习JAVA, 首先配置下环境! 1.Mac自带的jdk版本老了,需要到oracle官网去下载新的jdk,具体下载那个版本看个人需求,然后安装.   安装完成之后打开Terminal, 执行命 ...

  4. 两款工控控件对比评测:Iocomp和ProEssentials

    对于程序员来说,要凭一己之力开发出漂亮逼真的工控仪表和工控图表是非常耗时间和精力的,那么使用专业的第三方控件就是不错的选择,不仅节约开发时间,降低了项目风险,最重要的是第三方控件写的程序更专业,工控图 ...

  5. go语言基础之iota枚举

    1.iota (在常量的时候,当成枚举使用) 示例1 package main import "fmt" func main() { //1.iota常量自动生成器,每个一行,自动 ...

  6. salt-minion和salt-master之间如何重新认证

    salt minion 和salt master之间重新建立认证 修改了minion端的id之后 比如修改了hostname之后, minion端会将minion的id 存放在/etc/salt/mi ...

  7. JVM调优思路

    一.jvm内存调优 (Gc  和 Full gc) hotspot -Xms40m  最小堆内存 -Xmx512m 最大值内存 -verboose:gc -XX:PrintGCDetails -XX: ...

  8. 【实践】js实现windows系统日历

    思路:1.定义好每一个月份的日期天数 2.获取当前的系统日期初始化数据 3.输出日历    2.1.先获取当前月的第一天是星期几(这一点与日历的排版至关重要!)    2.2.获取当前月的天数    ...

  9. 最简单的方式用上https

    1.在这个网站申请ssl证书 https://www.sslforfree.com 2.下载的证书使用这个脚本处理一下 #!/bin/bash HOST_NAME=$1 cp certificate. ...

  10. dubbo forbid 注意的几种方式

    1.检查所调用的项目模块是否起来了 2.如果起来后,检查该模块配置是否正确 3.服务端起来后与管理端的项目内容不一致(比如服务端增加了东西,管理端没有更新)