18 Loader 总结
1. Loader 裝載器 Android3.0以后出來的 它可以使Activity和Fragment 異步加載數(shù)據(jù) 變得簡(jiǎn)單(Loader里封裝了AsyncTask)
1,對(duì)每一個(gè)Activity或者Fragment有效
2,提供異步加載數(shù)據(jù)的機(jī)制
3,監(jiān)測(cè)數(shù)據(jù)源的變化 ,并對(duì)變化返回新的結(jié)果
4,由于配置發(fā)生改變 重新創(chuàng)建Loader時(shí) 他會(huì)自動(dòng)鏈接上一個(gè)加載器游標(biāo),不會(huì)重新查詢數(shù)據(jù)
使用:
onCreateLoader(){
//創(chuàng)建Loader對(duì)象 返回Loader
}
onLoadFinished{
//加載數(shù)據(jù)
}
onLoaderReset(){
//清除數(shù)據(jù)
}
CursorLoader:包含了觀察者
一般和ContentResolver一起使用 加載ContentProvider暴漏出的數(shù)據(jù)
通過 Uri設(shè)置ContentObserver,檢測(cè)數(shù)據(jù)源的變化
繼承與AsyncTaskLoader<>
AsyncTaskLoader: 自己自定義Loader
onStartLoading{
執(zhí)行在主線程
forceLoad();//必須執(zhí)行 強(qiáng)制向下執(zhí)行
}
loadInBackground(){
//加載數(shù)據(jù)
}
觀察者:時(shí)刻檢測(cè)數(shù)據(jù)的變化
/**
- 自定義的觀察者
@author sxy
*
*/
class MyContentObserver extends ContentObserver{public MyContentObserver(Handler handler) {
super(handler);
// TODO Auto-generated constructor stub
}//當(dāng)你的數(shù)據(jù)發(fā)生改變時(shí) 調(diào)用此方法
@Override
public void onChange(boolean selfChange) {
// TODO Auto-generated method stub
super.onChange(selfChange);
//重啟Loader
getLoaderManager().restartLoader(1, null, MainActivity.this);
}
}
注冊(cè)觀察者:
/*** 注冊(cè)觀察者對(duì)象 給當(dāng)前Uri* 參數(shù)1:Uri對(duì)象* 參數(shù)2: 如果返回true 檢測(cè)到 content:sms content:sms/address content:sms/address/iii* 如果返回false 只能檢測(cè)到當(dāng)前的content:sms * * 參數(shù)3:觀察者* */ getContentResolver().registerContentObserver(Uri.parse("content://sms"), true, new MyContentObserver(null));轉(zhuǎn)載于:https://www.cnblogs.com/muyuge/p/6152238.html
總結(jié)
以上是生活随笔為你收集整理的18 Loader 总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转】[caffe]深度学习之图像分类模
- 下一篇: 免安装Oracle客户端使用PL/SQL