如何停止android中的asynctask线程?
我想从另一个AsyncTask线程停止一个AsyncTask线程。 我试图像new AsyncTask.cancel(true)来停止后台进程,但并没有停止。 
任何人都可以帮助我吗?
在你的活动中声明你的asyncTask:
 private YourAsyncTask mTask; 
像这样实例化它:
mTask = new YourAsyncTask().execute();
杀死/取消它是这样的:
mTask.cancel(true);
事情没有停止的原因是因为进程(doInBackground())运行,直到完成。 因此,你应该检查线程是否被取消或不做之前,
 if(!isCancelled()){ // Do your stuff } 
所以基本上,如果线程没有被取消,那么做,否则跳过它:)可能是有用的检查这一些在你的操作过程中,特别是在时间采取的东西。
此外,它可能是有用的“清理”一点
 onCancelled(); 
AsyncTask的文档:
http://developer.android.com/reference/android/os/AsyncTask.html
希望这可以帮助!
 您可能还必须在Activity Life Cycle的onPause或onDestroy中使用它: 
 //you may call the cancel() method but if it is not handled in doInBackground() method if (loginTask != null && loginTask.getStatus() != AsyncTask.Status.FINISHED) loginTask.cancel(true); 
 其中loginTask是AsyncTask对象 
谢谢。
你不能立即杀死asynctask。 为了阻止你应该先取消它:
 task.cancel(true); 
并比在asynctask的doInBackground()方法检查它是否已被取消:
 isCancelled() 
如果是,请停止手动执行。
我有一个类似的问题 – 基本上我是在用户销毁碎片后,在一个asynchronous任务中得到一个NPE。 在研究堆栈溢出问题后,我采用了以下解决scheme:
 volatile boolean running; public void onActivityCreated (Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); running=true; ... } public void onDestroy() { super.onDestroy(); running=false; ... } 
然后,我在asynchronous代码中定期检查“如果正在运行”。 我有压力testing了这一点,我现在无法“打破”我的活动。 这完美的工作,并有比我看到的一些解决scheme更简单的优势。
你可以检查onCancelled()一次然后:
受保护的对象doInBackground(Object … x){
 while (/* condition */) { if (isCancelled()) break; } return null; 
}