简介
Android在3.0之后中引入了Loaders,使用Loader可以很方便的来在Activity中加载数据,并且Activity能够管理Loader的生命周期,使之与Activity的生命周期同步。并且当手机配置项发生改变Activity重新创建时Loader能够retain而不用重新创建。Android在3.0引入Loader来代替之前版本中
managedQuery(Uri, String, String, String, String)
方法返回的Cursor,来让应用响应更快。下面主要是这两者的区别和介绍。
Android 3.0之后加入的Loader
1、任何一个Activity和Fragment中都可用
2、异步加载数据
3、监听数据数据源的改变,并且能够自动更新新添加的数据
4、当手机配置项发生改变时,能自动重新连接到Loader's 的cursor(retain),而不用重新查询数据
5、兼容包中也包含此特性,3.0之前的版本也可使用Loaders
在Android3.0之前
1、
public void startManagingCursor(Cursor)
会在Activity的生命周期管理cursor's的生命周期,Activity stop时cursor会变为无效,destroy时cursor会close(),且不能处理Activity配置项发生改变的情况
2、
public Cursor managedQuery(Uri, String, String, String, String)
返回一个Cursor,在返回之前会调用
startManagingCursor(Cursor)方法,让Activity来管理此Cursor的生命周期,当有几个
明显的几个缺点
(1)query on the main UI thread (不是异步加载数据),当加载的数据量一多时,应用反应迟钝,很容易引发ANR
(2)配置项发生改变时会requery,而不是retain已有的数据
(3)不能够监听到数据源的改变