2012-01-20 5 views
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()を実装してみてください

答えて

0

...それはasyncTaskが完了したかどうかを確認し、画面を取得し、適切に警告を表示することができ;-) を解決します
関連する問題