一个很重要的事情,以前使用AsynTask从来没有主动调用过取消,现在遇到了一个问题,就想着如何取消呢?
下面都是网上看到的一些理解,不过最好还是自己亲自实验后再决定如何做。
最后我决定在Fragment的onDesdroy() 方法中,这样处理:
@Override
public void onDestroy() {
super.onDestroy();
if (mGetFileLength != null && !mGetFileLength.isCancelled()) {
mGetFileLength.cancel(true);
}
}
----------------------------------------------------------------------------------------------------
AsyncTask无法用Cancel函数关掉.
如果AsyncTask正执行Sleep时,调用cancel方法,会产生异常InterruptedException.
如果希望能中途关掉AsyncTask,最好设置一个标志位,然后在doinbackground()里去查询这个标志.
一个AsyncTask对象只能执行一次,想执行第二次,必需重新创建.
-------------------------------------------------------------------------------------------------------在java的线程中,没有办法停止一个正在运行中的线程。在Android的AsyncTask中也是一样的。如果必须要停止一个线程,可以采用这个线程中设置一个标志位,然后在线程run方法或AsyncTask的doInBackground方法中的关键步骤判断这个标志位以决定是否继续执行。然后在需要终止此线程的地方改变这个标志位以达到停止线程的目的。
http://hi.baidu.com/justtmiss/item/e67ebf5a964ed4cad2e10cf0
http://www.cnblogs.com/tt-0411/archive/2012/03/25/2410830.html
http://blog.csdn.net/cynhafa/article/details/6860201