1. Loader 装载器 Android3.0之后出来的 它能够使Activity和Fragment 异步加载数据 变得简单(Loader里封装了AsyncTask)markdown
1,对每个Activity或者Fragment有效
2,提供异步加载数据的机制
3,监测数据源的变化 ,并对变化返回新的结果
4,因为配置发生改变 从新建立Loader时 他会自动连接上一个加载器游标,不会从新查询数据异步
使用:ide
onLoadFinished{
//加载数据
}this
onLoaderReset(){
//清除数据
}线程
CursorLoader:包含了观察者rest
通常和ContentResolver一块儿使用 加载ContentProvider暴漏出的数据
经过 Uri设置ContentObserver,检测数据源的变化
继承与AsyncTaskLoader<>code
AsyncTaskLoader: 本身自定义Loaderserver
onStartLoading{
执行在主线程
forceLoad();//必须执行 强制向下执行对象
}
loadInBackground(){
//加载数据
}继承
观察者:时刻检测数据的变化
/**
@author sxy
*
*/
class MyContentObserver extends ContentObserver{
public MyContentObserver(Handler handler) {
super(handler);
// TODO Auto-generated constructor stub
}
//当你的数据发生改变时 调用此方法
@Override
public void onChange(boolean selfChange) {
// TODO Auto-generated method stub
super.onChange(selfChange);
//重启Loader
getLoaderManager().restartLoader(1, null, MainActivity.this);
}
}
注册观察者:
/** * 注册观察者对象 给当前Uri * 参数1:Uri对象 * 参数2: 若是返回true 检测到 content:sms content:sms/address content:sms/address/iii * 若是返回false 只能检测到当前的content:sms * * 参数3:观察者 * */ getContentResolver().registerContentObserver( Uri.parse("content://sms"), true, new MyContentObserver(null));