1

下面我有一个方法可以取消我的 asynctask 和ProgressDialog. 该代码运行良好,但是当您按下后退按钮时,它也会停止一切,但它只会让用户盯着未填充的列表视图。所以这里的想法是,当用户单击后退按钮时,它会停止异步任务,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

1

finish();之后添加super.onBackPressed();

于 2013-08-29T23:27:20.830 回答
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(...)truedoInBackground(...)

在这种情况下,onPostExecute(...)不会被调用,而是onCancelled()会被调用,您可以调用finish()来终止Activity.

于 2013-08-30T00:44:11.373 回答