1
私は、非同期タスクでonPostExecute()メソッドで何らかの操作を実行した後に非同期タスクを使用しているアプリケーションを開発しました。すべての問題はうまくいきますが、問題はアプリケーションが黒の透明なレイヤーを表示しているアラートを表示するのではなく、バックグラウンドから来ている場合です。なぜそれが起こっているのですか?何か案は??ここで警告の代わりに黒の透明なレイヤーを表示する
は私のコードスニペットと、問題を再現する手順です:
非同期タスクに使用するアクティビティを作成してください:問題を再現するために
private class ImageUploaderTask extends AsyncTask<Void, Integer, Void> {
ProgressDialog mProgressDialog;
private void showLoading()
{
mProgressDialog = ProgressDialog.show(myActivity.this,
"Loading", "Please wait...", false, false);
}
private void dismissLoading()
{
mProgressDialog.dismiss();
}
@Override
protected void onPreExecute() {
showLoading();
}
@Override
protected Void doInBackground(Void... arg0) {
try
{
Thread.sleep(50000);
}
catch (Exception e) {
// TODO: handle exception
}
}
@Override
protected void onPostExecute(Void result) {
dismissLoading();
showAlert(myActivity.this,"Info","Process Finished.");
}
public void showAlert(Context context, String Title, String Message) {
AlertDialog.Builder alertbox = new AlertDialog.Builder(context);
alertbox.setTitle(Title);
alertbox.setMessage(Message);
alertbox.setCancelable(false);
alertbox.setPositiveButton("OK",null);
alertbox.show();
}
@Override
protected void onCancelled() {
dismissLoading();
}
}
ステップ:
1)を開始非同期タスクを実行し、アプリをバックグラウンドに送信します
2)非同期タスクが完了していることを確認し、アプリケーションをフォアグラウンドにします
3)アラートの代わりに、黒い透明な画面が表示されます。たぶん、アクティビティのライフサイクルと問題からonResume()を実装してみてください