Java 如何在Android中终止异步任务?
我目前有一个Android应用程序,有3个活动 主要活动: 使用AsyncTask不断轮询Xml文件,并使用onPostExecute更新UI 异步任务由以下循环执行:Java 如何在Android中终止异步任务?,java,android,eclipse,android-asynctask,Java,Android,Eclipse,Android Asynctask,我目前有一个Android应用程序,有3个活动 主要活动: 使用AsyncTask不断轮询Xml文件,并使用onPostExecute更新UI 异步任务由以下循环执行: Handler.postDelayed(runnableCode, Poll_internval); 第二项活动: 做同样的事情,使用另一个AsyncTask提取Xml,并使用onPostExecute更新UI 循环方式: Handler.postDelayed(runnableCode, Poll_internval);
Handler.postDelayed(runnableCode, Poll_internval);
第二项活动:
做同样的事情,使用另一个AsyncTask提取Xml,并使用onPostExecute更新UI
循环方式:
Handler.postDelayed(runnableCode, Poll_internval);
由于AsyncTask不断循环,我应该如何终止它
要在使用finish()结束此活动时终止它 即使使用
cancel
方法,也无法取消AsyncTask
您需要实现手动取消任务的逻辑,请参见以下链接:
您可以像这样使用:
Asyn mAsyn = new Asyn();
mAsyn.execute();
if(mAsyn.isCancelled()){
mAsyn.cancel(true);
}
有规定,,
您可以在处理程序中的回调中删除异步任务,这里有一个方法
handler.removeCallbacks(runnable);
在Asynctask中有状态,您必须开发逻辑并检查状态代码
在我的项目中,我有同样的条件,我开发了这种逻辑,它在我的代码中工作。
请检查。看看androidannotations框架,它支持运行异步任务并取消它们。您可以在此处查看详细信息: 基本上,您所需要做的就是使用注释在另一个线程中运行的方法
@Background(id="cancellable_task")
void someCancellableBackground(String aParam, long anotherParam) {
[...]
}
其中“id”是新线程的id。然后,要取消它,你只需打电话
BackgroundExecutor.cancelAll("id");
使用cancel()方法。@Md.ShahadatSarker否,它将不起作用