Java 如何在Android中终止异步任务?

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);

我目前有一个Android应用程序,有3个活动

主要活动:

使用AsyncTask不断轮询Xml文件,并使用onPostExecute更新UI

异步任务由以下循环执行:

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否,它将不起作用