
Android Architecture
timshinlee
这个作者很懒,什么都没留下…
展开
-
ViewModel
ViewModel是用来保存和操作UI相关的数据的,这样即使configuration发生改变,数据仍然可以存在。引入ViewModel的原因有三点:Activity和Fragment等App组件的生命周期都是由系统控制的,是开发者不可控的,保存在其中的数据就有丢失的危险。虽然可以通过onSaveInstanceState()来保存数据,可是这个回调只适合用来保存少量数据比如UI状态,对于一些大量原创 2017-08-02 13:40:16 · 3301 阅读 · 0 评论 -
操作Lifecycle
android.arch.lifecycle包提供了类和接口让开发者用来创建兼顾生命周期的组件,也就是说这些组件会自动根据当前Activity或Fragment的生命周期来调整行为。如果没有配合生命周期进行资源的获取和释放,可能导致内存泄露甚至是闪退。位置监听的实现一般是下面这样子的:class MyLocationListener { public MyLocationListener(C原创 2017-08-02 17:50:43 · 681 阅读 · 0 评论 -
Guide to App Architecture
app开发者遇到的普遍问题桌面应用大部分情况下都只有单一的入口,作为一整个进程运行。然而Android应用的组成更复杂,包含了activities、fragments、services、content providers、broadcast receivers等组件,因此要求app在用户来回切换界面和任务的时候考虑周全。关键点是app的组件可能不按顺序地单独启动 ,可能在任何时候被系统或者用户终原创 2017-06-24 16:43:31 · 1007 阅读 · 0 评论 -
LiveData
基本使用LiveData变换MediatorLiveDataLiveData是用来持有数据方便观测的,类似一个Observable。与一般的Observable不一样的地方在于,LiveData考虑到了app组件的生命周期。基本使用自定义类继承LiveData,指定泛型为所包含的数据类型在类中更新数据的方法中调用setValue(T t)来通知绑定的观察者。一...原创 2017-08-01 16:13:36 · 859 阅读 · 0 评论 -
Room
导入库Room的组成示例Entities主键索引和唯一性关系内嵌对象Data Access Objects(DAO)InsertUpdateDeleteQuery只返回部分列使用集合作为参数Observable查询RxJava直接获取Cursor查询多个表格类型转换数据库升级测试升级导出数据库架构附录:为什么Room禁止en...原创 2017-07-03 20:13:49 · 2426 阅读 · 0 评论 -
Paging
Paging库是用来代替在ListView中查询的CursorAdapter和在RecyclerView中查询的AsyncListUtil的。Paging库的主要组成:DataSource:定义数据来源,可以根据实际情况继承其子类: PageKeyedDataSource:使用当前Page保存的前后key来查找数据,例如使用当前保存的nextPage token。ItemKeyedD...原创 2018-04-24 14:09:51 · 1609 阅读 · 0 评论 -
Room使用实例
Room基本使用EntityDatabaseDaoViewModelRecyclerViewUIRoom结合PagingDaoViewModelRecyclerView.AdapterUIRoom基本使用Entity首先定义一个User类:// 定义为Entity@Entitypublic class User { // 设置主...原创 2018-04-24 15:36:54 · 2982 阅读 · 0 评论