2010-12-13 38 views
19
can anybody have any idea how to stop ASyncTask thread in android?. 

Thực ra tôi có một vòng lặp tạo chuỗi và thực thi chúng. và khi vòng lặp này kết thúc, tôi muốn dừng tất cả các chuỗi đã chạy. là có anyway để ngăn chặn chủ đề?cách dừng chuỗi ASyncTask trong android

cảm ơn rất nhiều.

+0

Điều gì khiến bạn nghĩ rằng chủ đề trong vòng lặp là một ý tưởng hay? – CommonsWare

Trả lời

41

Trong kinh nghiệm của tôi với AsyncTask, gọi cancel(boolean mayInterruptIfRunning) không nhất thiết phải ngừng thực hiện quá trình nền. Tất cả những gì dường như xảy ra là AsyncTask sẽ thực hiện onCancelled()sẽ không chạy onPostExecute() khi hoàn thành. Hành vi có thể phụ thuộc vào chính xác mã nào bạn có trong doInBackgound()

+20

Đúng. Kiểm tra isCancelled() thường xuyên trong doInBackground() để xem bạn có nên dừng công việc và tự hoàn thành hay không. – icyerasor

1

Trong trường hợp của tôi, tôi thực hiện các yêu cầu máy chủ với HttpPost, HttpGet và vân vân. Cách duy nhất tôi tìm thấy để kết thúc AsyncTask đã gọi phương thức abort() như bạn có thể thấy trong ví dụ sau

if (isCancelled) { 
    try { 
     //cancel the task and immediately abort the HttpRequest 
     uploadTask.cancel(true); 
     post.abort(); 
    } catch (UnsupportedOperationException e) { 
     e.printStackTrace(); 
    } 
} 
Các vấn đề liên quan