0

在我的Android應用程序中,我有一個本地數據庫(SQLite),該應用程序需要查詢數據。查詢可能需要很長時間(> 5秒),所以我避免使用主UI線程。返回的數據也可能相當大(> 1 MB)。訪問SQLite數據庫的Android最佳設計實踐

在AsyncTasks,Threads,ExecutorService和IntentService之間(也許更多)什麼是最好的類/ API在Android中使用這樣做?他們所提供的東西都差不多嗎?還是有明確的贏家和更適合數據庫訪問的類?

+0

我認爲這是基於意見的,但目前,首選的選擇似乎是使用'Loader'類(即'CursorLoader') –

回答

1

答案,我相信你可以預測,是「它取決於」。

如果您正在編寫一組相關的調用(例如,將使用API​​同步您的數據庫),那麼我想要使用IntentService,因爲它是一個長時間運行的操作,並不直接綁定到您的用戶界面。

如果是一次性操作觸擊數據庫以獲取結果集,我會傾向加載器框架/ CursorLoader以獲取用戶界面的數據。 AsyncTask是一個選項,雖然它確實是一個更通用的線程機制。此外,請考慮一個ORM框架,它可以爲您工作或維護一系列工作項目。

我真的不能想到直接管理線程將是最佳選擇的情況。當它有更好的抽象時,它的級別非常低,並且存在很多錯誤空間。

+0

'Loaders'怎麼樣? –

+0

是的好點,不知道我怎麼忘了!我更新了我的答案 –