Android 使用Loader示例

2021-09-06 08:31:22 字數 1851 閱讀 1944

android 3.0 sdk,引入了很多新api,比如loader。和fragment類似(編寫相容android1.6的fragment),該api也可在android 1.6以上版本執行。

以下介紹如何編寫loader,實現對listview的非同步載入。效果如圖:

示例中有乙個後台執行緒每隔3秒更新資料庫的長江記錄,將記錄改為「長江」或「long river」。listview無需監控資料庫變化,基於loader,會自動更新。實際上這裡面是觀察者模式,無非是系統自帶了,只需呼叫即可,無需自己構造觀察者。

這個示例也是完整的sqlite+content provider+cursor adapter+listview+loader組合示例。

編寫前的準備類似編寫相容android1.6的fragment,需要匯入jar包。

另外,2.3以前的activity類沒有提供一些loader的幫助方法,需要讓自己的activity實現類繼承fragmentactivity:

1

public

class listviewactivity extends fragmentactivity

本示例是在在檢視顯示中使用theme基礎上實現的。

activity類和rivercontentprovider類做了修改。

activity類:

public

class listviewactivity extends

fragmentactivity

private

void

initloader() ,

null, null, null

); //

cursorloader.setupdatethrottle(1000);

return

cursorloader;

}@override

public

void onloadfinished(loaderloader,

cursor cursor)

@override

public

void onloaderreset(loaderloader)

});

}private

void

setriverlistviewadapter() ,

newint

, cursoradapter.flag_register_content_observer);

riverlistview.setadapter(adapter);

}

主要是增加了initloader方法。這裡主要是實現了loadercallbacks介面。其中:

然後,在content provider中,要呼叫類似觀察者模式中通知的方法,即,在update方法中通知觀察者記錄改變,在query方法中註冊觀察者,這樣通知來了可接收並處理。

update方法:

@override 

public

intupdate(uri uri, contentvalues values, string selection, string selectionargs)

query方法:

public

cursor query(uri uri, string projection, string selection, string selectionargs, string sortorder)

Android 使用Loader示例

android 3.0 sdk,引入了很多新api,比如loader。和fragment類似 編寫相容android1.6的fragment 該api也可在android 1.6以上版本執行。以下介紹如何編寫loader,實現對listview的非同步載入。效果如圖 示例中有乙個後台執行緒每隔3秒更...

Android 使用Loader示例

android 3.0 sdk,引入了很多新api,比如loader。和fragment類似 編寫相容android1.6的fragment 該api也可在android 1.6以上版本執行。以下介紹如何編寫loader,實現對listview的非同步載入。效果如圖 示例中有乙個後台執行緒每隔3秒更...

Loader技術原理

loader是實現fusioninsight hd與關係型資料庫 檔案系統之間互動資料和檔案的資料載入工具。基於開源sqoop研發,做了大量優化和擴充套件。提供視覺化嚮導式的作業配置管理介面 提供定時排程任務,週期性執行loader作業 在介面中可指定多種不同的資料來源 配置資料的清洗和轉換步驟 配...