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));