2012-02-29 57 views
1

我正在開發一個項目。希望此應用的用戶不希望智能手機訪問數據庫。所以他們在線放置XML文件。首次安裝應用程序時,我在本地sqlite數據庫中讀取xml,以便它們可以脫機訪問數據。飛濺屏幕上的Android異步任務

現在將xml文件加載到sqlite中。加載xml文件並不需要很長時間,但是足夠長的時間才能將其放入到異步任務中。現在我不知道在一個異步任務中做出閃屏並運行xml解析是否聰明。或者如果我需要在其他時間這樣做?

有沒有人有解決方案?

謝謝!

+0

應用程序是否在沒有數據的情況下運行?如果*不是*它應該可能是一個'AsyncTask'並且在進行初始準備時在屏幕上顯示進度更新/閃屏。 – Jens 2012-02-29 08:40:33

+0

不,你需要這些數據。所以我第一次將數據加載到asynctask上。並給用戶反饋一個進度條..感謝您的快速回復! – 2012-02-29 08:44:57

回答

0

首先,當然任何包含網絡和數據庫查詢的操作應該在單獨的線程中完成(使用AsyncTask是個好主意)。然後,有實現你的邏輯有兩種方式:

  1. 如果說之前的數據取出,並放置到DB用戶可以做什麼與你的應用程序,你應該表現出某種ProgressDialog告訴你的用戶,你的應用程序正在爲這項工作做好準備。
  2. 如果有其他選項不需要來自Internet的數據,則必須在後臺完全運行數據獲取操作,讓用戶與應用程序進行交互。

希望這會有所幫助。

+0

如果我將xml文件放在應用程序中,這是個好主意嗎?所以當他們沒有互聯網訪問時,我可以解析XML文件。 (並讓他們知道他們有一箇舊版本的數據庫)但他們可以使用該應用程序。當他們訪問互聯網時,我會檢查更新? – 2012-02-29 08:57:12

+0

與數字1你的意思也有點與進度條/對話的飛濺? – 2012-02-29 08:58:04

+0

@ user1110599,如果你的應用程序的邏輯允許它 - 確定你可以。另外,我建議您實施服務和廣播接收器來收聽連接信息。當用戶連接到網絡時,該服務可以在後臺下載數據,以便在用戶打開應用程序時準備好應用程序。 – Egor 2012-02-29 08:59:19

0

我認爲這取決於你將如何處理一個錯誤,比如你的服務器關閉了,或者用戶的網絡連接出了問題。 Splashscreen可以加載顯示活動本身所需的資源,但我認爲不要讓用戶在後臺運行AsyncTask s,這會讓你的應用程序看起來很慢=>不好的用戶體驗。

+0

這實際上是我害怕的。但是沒有數據,應用程序就無法工作。所以我需要做出選擇。目前我沒有看到另一個解決方案,然後飛濺。你會如何解決這個問題? – 2012-02-29 08:52:16

+0

我想你應該和那些「想要應用程序」的人交談,如果沒有連接,他們覺得應用程序中什麼都不顯示。他們希望你緩存你得到的最後一個xml嗎?你只需要拉一個更新的版本並更新你的UI。無論如何,卡在屏幕上並不是一個好的理念,所以不要這樣做。 – 2012-02-29 09:03:04