2010-07-01 52 views
3

HI, 我試圖在活動加載時顯示ProgressDialog。 我的問題是,雖然我完成了活動 中的所有工作,但活動加載需要很長時間,我懷疑這是因爲我使用了多個視圖和多個視圖,並在viewflipper中使用了多個自定義數組適配器。 界面顯示需要很長時間。Android展示ProgressDialog,直到活動UI完成加載

我將如何去檢查活動中的所有UI是否完成加載?

或者是否有預加載所有活動和UI的方法?

感謝,

+0

你是否在與UI相同的線程上執行「工作」?加載你的列表視圖和什麼不是,在同一個線程將阻止顯示的活動。 – 2010-07-01 18:05:17

+0

我在創建工作,所以我可以生成視圖,然後調用setContentView();然而,OnCreate()完成並且所有對OnStart()和OnResume()的調用,但是我僅在約8秒後纔看到UI。 – totem 2010-07-01 18:11:18

回答

0

使用的AsyncTask

new DownloadTask().execute(); 


    private class DownloadTask extends AsyncTask<String, Void, Object> { 

    protected void doInBackgroind(Void... arg0){ 
    //Do time Consuming Processing 
    publishProgres() 
    return null; 
    } 

    protected void onProgressUpdate(Void... arg0){ 
    } 

    protected void onPostExecute(Void... result){ 
    log.i("AvtivityInfo", "activity finished loading..."); 
    } 

}  
+0

不知道這是否會奏效......我必須親自嘗試一下。 – Cristian 2010-07-01 17:46:08

+0

這將如何幫助?我的問題是,即使該活動已經收到所有可見的消息,如「公共無效onWindowFocusChanged(布爾hasFocus)」 所有的用戶界面的東西是在創建,我懷疑列表視圖適配器正在做的事情背景和多數民衆贊成在主要問題 – totem 2010-07-01 17:55:18

+0

問題是它不是一個「任務」沒有下載或通信或任何異步操作涉及這裏它只從XML加載資源,這一切都發生在OnCreate上,這需要不到一秒鐘完成,但是UI僅在8秒左右後才真正可見。 – totem 2010-07-01 18:20:46

0

如果你認爲你需要一個ProgressDialog因爲你的活動是開得太慢,你有更大的問題。 Android很可能會通過一個不響應的錯誤來終止您的活動。

您可以變得複雜並使用Traceview來查找您的性能問題,或者您可以嘗試。例如,您可以跳過設置ListViews中的適配器,以確認問題確實存在。

Jorgesys在他現在刪除的條目中有正確的答案,從我所知道的。我懷疑加載適配器花了很多時間,可能是在數據庫查詢中,並且您需要將其中的一部分移動到AsyncTasks

+0

那就是沒有數據庫查詢的事情,只能使用繪圖和佈局。我不能想到分解成AsyncTasks的原因,因爲所有的工作都在OnCreate中,非常快。 ArrayAdapter是否加載異步?如果有的話,是否有辦法檢查它的完成加載? – totem 2010-07-01 18:53:29

+0

@totem:「ArrayAdapter是否加載異步?」沒有。 – CommonsWare 2010-07-01 19:05:21

相關問題