![](/img/trans.png)
[英]How can I stop asynctask in android when back button is pressed?
[英]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);
}
AsyncTask有一个cencel方法: http : //developer.android.com/reference/android/os/AsyncTask.html#cancel( boolean )
在Activity B的onDestroy()
方法中,你应该调用asynTask.cancel(true)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.