1

以下に、asynctask をキャンセルするメソッドとProgressDialog. コードはうまく機能しますが、戻るボタンを押すと、想定どおりにすべてが停止しますが、ユーザーは未入力のリストビューを見つめたままになります。ここでの考え方は、ユーザーが [戻る] ボタンをクリックすると asynctask が停止し、ユーザーが何も入力ProgressDialogされていないリストビューを見ているだけでなく、メイン アクティビティにも戻るようにするというものです。これを可能にするのを手伝ってくれる人はいますか?

@Override
public void onBackPressed() 
{              
    /** If user Pressed BackButton While Running Asynctask
        this will close the ASynctask.
     */
    if (mTask != null && mTask.getStatus() != AsyncTask.Status.FINISHED)
    {
        mTask.cancel(true);
    }          
    super.onBackPressed();
}


@Override
protected void onDestroy() {
    // TODO Auto-generated method stub


/** If Activity is Destroyed While Running Asynctask
        this will close the ASynctask.   */

 if (mTask != null && mTask.getStatus() != AsyncTask.Status.FINISHED)
 {
    mTask.cancel(true);
  }  

    super.onDestroy();

}

@Override
protected void onPause() {
    // TODO Auto-generated method stub


 if (pDialog != null)
 {
     if(pDialog.isShowing())
     {
         pDialog.dismiss();
     }
        super.onPause();

  }  

}
4

3 に答える 3

0

これを使用します: getActivity = フラグメントの場合、アクティビティの場合は ActivityName.this を使用します

 Intent intent = new Intent(getActivity(), MainActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
            finishActivity(false);
于 2014-11-16T06:04:06.707 に答える
0

電話をかけるだけでmTask.cancel(true);は、すぐにキャンセルされませんAsyncTask。定期的に電話isCancelled()をかける必要がありますdoInBackground(...)- 結果がtrueから戻る必要がある場合doInBackground(...)

この場合、onPostExecute(...)は呼び出されず、代わりonCancelled()に が呼び出され、 を呼び出しfinish()て を終了できますActivity

于 2013-08-30T00:44:11.373 に答える