繁体   English   中英

当按下后退按钮时如何在android中停止asynctask

[英]How to stop asynctask in android when back button is pressed

我有一个活动(比如Avtivity A),它运行一个asyncatsk并显示一些结果,这些结果会显示在另一个活动中(活动B)。 一切都很好。 当用户单击按钮时,任务被触发,另一个活动(活动B)与进度条一起显示。 如果我按下活动B中的后退按钮(进度条仍然可见),我转到活动A.但是一段时间后(任务完成时)活动B变为可见。

当用户在活动B中按下后退按钮时,我希望停止asynctask(与活动A相关联)。

请帮助我,谢谢你的帮助

MyAsyncTask myTask=null;
myTask = new MyAsyncTask();

执行任务

myTask.execute();

停止/取消任务

public void onBackPressed()
{

    myTask.cancel(true);
}

如果你显示结果和进度条,并处理活动B中的取消,那么你可能应该在活动B中启动你的AsyncTask。但是我建议你等到AsyncTask完成然后用捆绑中的数据启动活动B. 无论哪种情况,您都可以在一个活动中处理所有与AsyncTask相关的事情。 尽量不要过分重视一切。 只需实现一些OnAsyncTaskFinishedListener(),如:

在AsyncTask类中:

public interface OnMyAsyncTaskCompletedListener {
    void onMyAsyncTaskCompletedListener(MyResults results);
}

@Override
protected void onPostExecute(MyResults results) {
    onMyAsyncTaskCompletedListener(results);
}

@Override
protected void onCancelled() {
    onMyAsyncTaskCompletedListener(null);
}

然后在您的Activity中实现OnMyAsyncTaskCompletedListener和

public void onServerRequestCompleted(MyResults results) {
    //Start activity passing results in Intent
}

最后,要取消正在运行的活动,请执行以下操作:

@Override
public void onBackPressed() {
    mMyAsyncTask.cancel(true);
}

Activity BonDestroy()方法中,你应该调用asynTask.cancel(true)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM