2017-02-02 16 views
0

アクティビティがlaunchMode="SingleTask"の場合、ProgressDialogで2回目の表示に問題があります。アクティビティがlaunchMode = "SingleTask"の場合、Progress Dialogが2回表示されません

私はアクティビティをSingleTaskとして持つ必要があります。はじめてボタンをクリックするとダイアログが表示されますが、アクティビティを閉じてもう一度やり直すとボタンをクリックするとProgressDialogは再び表示されません。

マイコード:

private class FakeTask extends AsyncTask<Integer, Void, Void>{ 
     private FakeCallBackListener mListener; 
     FakeTask(FakeCallBackListener listener){ 
      mListener = listener; 
     } 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      mProgressDialog = new ProgressDialog(mContext); 
      mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
      mProgressDialog.setIndeterminate(true); 
      mProgressDialog.setMessage(mContext.getString(R.string.processing_data)); 
      mProgressDialog.setCancelable(false); 
      mProgressDialog.setInverseBackgroundForced(true); 
      if (!((Activity)mContext).isFinishing()){ 
       mProgressDialog.show(); 
      } 
     } 

     @Override 
     protected Void doInBackground(Integer... params) { 
      try { 
       Thread.sleep(params[0]); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
      return null; 
     } 

     @Override 
     protected void onPostExecute(Void aVoid) { 
      super.onPostExecute(aVoid); 
      mProgressDialog.dismiss(); 
     } 
    } 

と、ボタンがクリックされたときに、私はちょうどこの呼び出し:私が持っている特定のActivityにマニフェストに

new FakeTask(listener).execute(delay); 

を:

android:launchMode="singleTask" 

任意の提案?私は、アクティビティが実際には破壊されていないので、コンテキストが死んだダイアログに渡っていることを知っています。しかし、どのように私は毎回表示するダイアログを修正するのですか?

答えて

1

mContextにアクセスして問題が発生したと思います。

FakeTaskコンストラクタのパラメータとして渡すのはなぜですか?

private FakeCallBackListener mListener; 
private Context mContext; 

FakeTask(Context context, FakeCallBackListener listener) { 
    mContext = context; 
    mListener = listener; 
} 
関連する問題