0

我的應用需要加載一些JSON才能顯示UI上的任何內容,JSON決定了應用的主題。Android onCreate和AsyncTask延遲

雖然我通常不喜歡他們,閃屏/加載屏幕是必需的,以便用戶不必看到的界面顏色的改變等各要素但是我的問題是,當我打開我的應用程序,我可以在我的進度對話框啓動前幾秒鐘看到默認樣式。我可以看到默認的黑暗梯度全息背景,包含我的應用程序標題的操作欄。如果我將操作欄隱藏在XML中,我無法在以後添加它,並在執行操作時獲取nullpointerexceptions

我曾嘗試在onCreate()的最開始處啓動啓動畫面,然後我甚至設置了我的AsyncTask,並嘗試在onPreExecute()中啓動它。

我希望能夠在應用程序啓動時立即顯示加載對話框立即或者如果必須有延遲,我只希望用戶看到黑色背景。

有沒有完全不同的方式來做到這一點,我沒有提到?

謝謝。

+1

使用分離活動的啓動畫面 – njzk2 2013-02-15 15:24:49

+0

怎麼能在我(目前)MainActivity我的風格,並加載內容從單獨的閃屏活動? – SteveEdson 2013-02-15 15:27:13

+0

爲什麼你不能? – njzk2 2013-02-15 15:29:01

回答

1

我真的會考慮在這裏使用片段。你可以爲你的啓動畫面添加一個片段,並在你的活動首次啓動時加載它。然後,一旦你的json加載/解析完成,你可以使用FragmentTransaction加載你的第二個'屏幕'作爲第二個片段,並讓它替換你的加載屏幕。這也可以讓你做一些漂亮的過渡動畫。

這可以用來自njzk2的評論和兩個單獨的活動類似地完成。本質上,您可以在'加載活動'期間解析AsyncTask,並將結果存儲爲可使用Intent extra傳遞給其他活動的可序列化對象,也可以將json存儲到SharedPreferences字典中,並在您的第二項活動。

您可能還會發現,這是每次啓動都不必做的事情。如果是這樣,您應該將可序列化文件保存到磁盤,以便您可以跳過解析或共享首選項,以便在存在時可以參考它。

0

你看到的是一個根據你的主題爲主題的空活動。 因此,你無能爲力 - 如果自舉活動需要一些時間,它將顯示出來。

你可以做的是設置特殊主題與飛濺圖像設置爲windowBackground(窗口裝飾視圖的背景)的活性,並去除背景以後,如果你不需要它。

<style name="SplashScreenActivityTheme" parent="android:Theme.Light.NoTitleBar"> 
     <item name="android:windowBackground">@drawable/splash_image</item> 
</style> 

更多關於它,你可以閱讀here in fresh post of Cyril Mottier

還有一個通知:機器人一般不使用閃屏。你可以使用一些進度指標如ProgressBar或其他東西,如果你的設計師沒有反對它

+0

它有點複雜,偶爾,啓動畫面的圖像可能會改變,但它仍然會在文件系統上使用本地圖像。所以在xml中設置背景(實質上是對其進行硬編碼)並不合適。謝謝你的回覆和文章,但我現在通讀了它。 – SteveEdson 2013-02-15 15:35:46