2012-11-25 121 views
1

當我的測驗應用第一次啓動時,它需要向數據庫添加問題和其他一些事情,這需要幾秒鐘的時間。我想在發生這種情況時顯示不確定的進度條。一旦添加了問題,課程將調用finish()並移至主屏幕。問題是佈局不被繪製,除非完成沒有被調用。我認爲它不會在調用oncreate和onstart之前繪製XML佈局。那麼我該如何解決這個問題?Android佈局不顯示

回答

1

原因是,當您填充數據庫時,UI未顯示,可能是您在UI-Thread中執行此操作 - 應用程序的主線程。當線程忙於填充數據庫時,沒有時間顯示UI,爲進度指示器設置動畫或對用戶操作做出反應。

因此,您應該總是在單獨的線程中運行耗時的任務。請參閱在Android devloper的博客大約無痛線程更多信息,這個優秀的條目,並把事情做對:

+0

謝謝。我真的沒有意識到這一切(我仍然是新開發的)。鏈接的文章真的很有趣,有沒有一個地方可以查看如何實現Async,同時仍然訪問我的數據庫和sharedpreferences? – AndroidPenguin

+0

找出如何讓它工作。你們都說過同樣的事情,但你提供了更多信息。謝謝:)真的很感謝幫助! – AndroidPenguin

1

使用AsyncTask,在其onPreExecute中顯示進度對話框並在onPostExecute中解除準備您的db在doInBackground

除非使用DialogFragment來顯示對話框,否則您必須處理設備旋轉。

+0

我看到,我要實現的AsyncTask。我閱讀了文檔,但是我不確定如何在訪問和寫入SQLite數據庫時使用它。你有什麼機會可以提供一些見解? – AndroidPenguin

+0

@ user1676486您可以將您的sql或任何其他操作放入doInBackground()中,只要它們不觸及UI –