2012-06-05 45 views
2

啓動畫面之後,大約需要6秒鐘才能加載主活動中的onCreate內容。所以我想說明,同時加載進度對話框,這裏就是我所做的:主要活動中的進度對話框onCreate未顯示

import ... 

private ProgressDialog mainProgress; 

public void onCreate(Bundle davedInstanceState){ 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.main); 

    mProgress = new ProgressDialog (Main.this); 
    mProgress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
    mProgress.setMessage("Loading... please wait"); 
    mProgress.setIndeterminate(false); 
    mProgress.setMax(100); 
    mProgress.setProgress(0); 
    mProgress.show(); 

    ---some code--- 

    mProgress.setProgress(50); 

    ---some code--- 

    mProgress.setProgress(100); 
    mProgress.dismiss(); 
} 

,它不工作...屏幕一直是黑色的5-6秒,然後加載主佈局。我不知道我做了這部分錯誤:*(

+0

無論你在'--- some code ---'中做什麼,都會阻塞UI線程。考慮使用「AsyncTask」代替。 http://developer.android.com/reference/android/os/AsyncTask.html – Squonk

回答

3

你需要做的其他線程啓動忙碼(不是UI線程)
在您的活動創建ProgressDialog和線程關閉

mProgress = new ProgressDialog (Main.this); 

Runnable runnable = new Runnable() { 
    @Override 
    public void run() { 
     // code that needs 6 seconds for execution 

     // after finishing, close the progress bar 
     mProgress.dismiss(); 
    } 
}; 

new Thread(runnable).start(); 
1

這是因爲你在UI線程上做的一切,從而阻止它。

你應該做你所有的繁重工作在一個單獨的線程和更新進度通過

0

我改變對話框d AndroidManifest.xml中的ebuggable標誌爲true。

android:icon="@drawable/icon" 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
    android:debuggable="true"