在我的Android應用程序中,我有一個本地數據庫(SQLite),該應用程序需要查詢數據。查詢可能需要很長時間(> 5秒),所以我避免使用主UI線程。返回的數據也可能相當大(> 1 MB)。訪問SQLite數據庫的Android最佳設計實踐
在AsyncTasks,Threads,ExecutorService和IntentService之間(也許更多)什麼是最好的類/ API在Android中使用這樣做?他們所提供的東西都差不多嗎?還是有明確的贏家和更適合數據庫訪問的類?
在我的Android應用程序中,我有一個本地數據庫(SQLite),該應用程序需要查詢數據。查詢可能需要很長時間(> 5秒),所以我避免使用主UI線程。返回的數據也可能相當大(> 1 MB)。訪問SQLite數據庫的Android最佳設計實踐
在AsyncTasks,Threads,ExecutorService和IntentService之間(也許更多)什麼是最好的類/ API在Android中使用這樣做?他們所提供的東西都差不多嗎?還是有明確的贏家和更適合數據庫訪問的類?
答案,我相信你可以預測,是「它取決於」。
如果您正在編寫一組相關的調用(例如,將使用API同步您的數據庫),那麼我想要使用IntentService,因爲它是一個長時間運行的操作,並不直接綁定到您的用戶界面。
如果是一次性操作觸擊數據庫以獲取結果集,我會傾向加載器框架/ CursorLoader
以獲取用戶界面的數據。 AsyncTask
是一個選項,雖然它確實是一個更通用的線程機制。此外,請考慮一個ORM框架,它可以爲您工作或維護一系列工作項目。
我真的不能想到直接管理線程將是最佳選擇的情況。當它有更好的抽象時,它的級別非常低,並且存在很多錯誤空間。
'Loaders'怎麼樣? –
是的好點,不知道我怎麼忘了!我更新了我的答案 –
我認爲這是基於意見的,但目前,首選的選擇似乎是使用'Loader'類(即'CursorLoader') –