我目前正在玩android API。目前我正在做一些GUI數據庫綁定,我開始有點惱火。Android數據庫訪問(簡單和高性能)
我有一個簡單的ListActivity
與列表項的自定義佈局。現在我想將底層的ListView
綁定到數據庫中的一個表。每當我對數據庫進行更改時,我都希望能夠通知ListView自行刷新並更新GUI。起初,問題看起來很簡單:只需添加一個SimpleCursorAdapter
,將它傳遞給一個用於獲取數據的光標,將列綁定到佈局ID並向下。每當你想刷新時只需在ListView上調用notifyDataSetChanged()
即可完成,對嗎?沒有!
原來,這樣數據庫將在UI線程中查詢,這顯然是一件壞事,因爲它會降低性能並可能導致「應用程序無響應」錯誤。
目前,它看起來像唯一的方法是使用Loaders和ContentProviders。這可能是處理數據訪問的最抽象和最乾淨的方式,但它也增加了大量代碼(尤其是在ContentProvider本身中,您必須執行大量醜陋的if-else開關事件處理以「解析」請求)。因此我的問題是:什麼是現有技術(向後兼容API級別< 11)的方式來連接數據庫表到ListView(或任何其他UI組件)?我真的必須使用ContentProvider嗎?
爲什麼這麼複雜? I.e .:掃描藍牙設備可以在20行代碼中實現,但對於(從我的角度來看)更常見的事情,比如數據連接,你必須實現至少兩個100+以上的locale。這太瘋狂了!
優化您的數據庫,以便查詢速度更快。或者,使用asynctask進行查詢並替換遊標(或適配器)。 – njzk2