アプリが開いているときに進行状況ダイアログ「読み込み中」を表示したい。
これを行うために 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();
}
};