2012-06-05 44 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"