use*_*ser 55 android android-asynctask
我想AsyncTask从另一个AsyncTask线程中停止一个线程.我试图
new AsyncTask.cancel(true)阻止后台进程,但它没有停止.
有人可以帮我吗?
Yas*_*mar 105
在您的活动中声明您的asyncTask:
private YourAsyncTask mTask;
Run Code Online (Sandbox Code Playgroud)
像这样实例化它:
Run Code Online (Sandbox Code Playgroud)mTask = new YourAsyncTask().execute();
像这样杀死/取消它:
Run Code Online (Sandbox Code Playgroud)mTask.cancel(true);
Dec*_*ome 20
事情没有停止的原因是因为进程(doInBackground())一直运行直到完成.因此,在执行操作之前,您应该检查线程是否被取消:
if(!isCancelled()){
// Do your stuff
}
Run Code Online (Sandbox Code Playgroud)
所以基本上,如果线程没有被取消,那就去做吧,否则跳过它:)在你的操作过程中检查这个问题可能会有用,特别是在服用时间之前.
此外,"清理"可能也很有用
onCancelled();
Run Code Online (Sandbox Code Playgroud)
AsyncTask的文档:
http://developer.android.com/reference/android/os/AsyncTask.html
希望这可以帮助!
Pra*_*ani 12
您也可以在使用它onPause或onDestroy的Activity生命周期:
//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);
Run Code Online (Sandbox Code Playgroud)
在哪里loginTask是你的对象AsyncTask
谢谢.
你不能立即杀死asynctask.为了停止你应该首先取消它:
task.cancel(true);
Run Code Online (Sandbox Code Playgroud)
而且在asynctask的doInBackground()方法中检查它是否已被取消:
isCancelled()
Run Code Online (Sandbox Code Playgroud)
如果是,则手动停止执行.
| 归档时间: |
|
| 查看次数: |
93865 次 |
| 最近记录: |