2010-11-19 50 views
1

我對android開發有點新。我知道網絡活動和昂貴的操作不應該在UI線程上完成,但數據庫活動呢?關於在an​​droid onCreate()中datàbase活動的問題c

我有一個活動,當開始時,我查詢一個sqlite數據庫,並動態填充與充氣機tablelayout中的行。我在oncreate()方法中完成了這一切。這應該在一個單獨的線程中完成嗎?如果是這樣,任何人都可以提供一個例子嗎?

謝謝!

回答

1

我不希望本地查詢真的讓用戶界面變慢。你第一次啓動應用程序時是否注意到任何掛起?像通過網絡獲取URL應該是在他們自己的線程中,因爲它們可能導致長時間掛起。

+0

不,我沒有真正體驗或看到任何延誤... – littleK 2010-11-19 01:48:13

+0

我不會擔心它們。在UI線程中不做任何事情的唯一原因是因爲它會導致掛起並使其對用戶的響應性下降。 – JOTN 2010-11-19 02:16:55

+1

本地數據庫查詢確實需要足夠長的時間來減慢應用程序的運行速度,並可能觸發應用程序無響應錯誤,具體取決於設備。在很多情況下你可能會忽略它,但在UI線程中這不是一件安全的事情。 – adamp 2010-11-19 05:05:51

2

根據數據庫和設備的不同,在UI線程上查詢數據庫可能會觸發ANR消息。

Android提供了一種簡單的方法來執行異步查詢,因此如果需要比預期更長的時間,最終不會阻止UI線程。查看文檔中的AsyncQueryHandler,IOSched有一個可以竊取和使用的實現。