我想在我的应用程序打开时显示一个“正在加载”的进度对话框。
我尝试了 AsyncTask 和其他一些方法(Uithread、线程)来做到这一点,但都失败了。
我不知道为什么,但是我的手机屏幕上没有显示进度对话框。我总是看到一个黑屏。
在 getApnData 引发异常并显示我的活动 UI 组件后,进度对话框有效,但为时已晚
这是我的一些代码部分。
//1-1-1-1-1
//On create or OnStart
LoginProgressTask task1 = new LoginProgressTask();
task1.execute();
//Inner class
class LoginProgressTask extends AsyncTask<String, Integer, Boolean> {
@Override
protected Boolean doInBackground(String... params) {
try {
getApnData(); // Do your real work here
} catch (Exception e) {
e.printStackTrace();
}
return Boolean.TRUE; // Return your real result here
}
@Override
protected void onPreExecute() {
super.onPreExecute();
LoginUI.this.pd = ProgressDialog.show(LoginUI.this, "", "Loading...", true, true);
}
@Override
protected void onPostExecute(Boolean result) {
// LoginUI.this.pd.dismiss();
}
}
//2-2-2-2-2
//OnCreate or OnStart
pd = ProgressDialog.show(this, "", "Loading...", true, false);
thread = new Thread(this);
thread.start();
//run
@Override
public void run() {
try {
firstRunUI();
handler.sendEmptyMessage(0);
} catch (Exception e) {
e.printStackTrace();
}
}
//UIRun
public void firstRunUI() {
runOnUiThread(new Runnable() {
@Override
public void run() {
try {
getApnData();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
//Handler
private Handler handler = new Handler() {
public void handleMessage(Message msg) {
pd.dismiss();
}
};