Tôi muốn thực hiện một asynctask sau khi hoàn thành tác vụ đầu tiên. Nhưng khi in trạng thái của nhiệm vụ đầu tiên, nó luôn hiển thị RUNNING.If thực hiện cả hai nhiệm vụ song song chỉ nhiệm vụ nhỏ hơn sẽ được thực hiện. Tôi đang chạy cả hai trong phương pháp oncreate hoạt động.Trạng thái Asynctask luôn hiển thị chạy
đây là mẫu mã của tôi
public class test extends Activity
{
ExecuteTask1 task1;
ExecuteTask2 task2;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
task1 = new ExecuteTask1();
task1.execute(token);
System.out.println(task1.getStatus());
if(task1.getStatus() ==AsyncTask.Status.FINISHED)
{
task2 = new ExecuteTask2();
task2.execute(token);
}
}
}
Cảm ơn Ted làm việc tốt. – Reji
Có thể hơi tắt chủ đề nhưng nó có thể là getStatus() trả về Chạy nếu AsyncTask đã bị hủy trước oO không? Ít nhất đó là những gì tôi đang nhận được ngay bây giờ, mặc dù đã hủy bỏ AsyncTask của tôi (trừ khi cùng một nhiệm vụ bằng cách nào đó được tự động hồi sinh xD). – AgentKnopf
@Zainodis - 'AsyncTask.getStatus()' thực sự có thể trả về 'RUNNING' sau khi' cancel() 'được gọi và trả về' true'. Lệnh gọi 'cancel()' có thể, ví dụ, gọi 'interrupt()' trên chuỗi cơ bản hoặc có thể chỉ cần đặt cờ 'isCancelled()' cho 'AsyncTask', nhưng trạng thái của 'AsyncTask' won' t thay đổi cho đến khi chuỗi bên dưới thông báo ngắt hoặc thay đổi giá trị cờ và thực sự thoát. Đó là lý do tại sao các tài liệu khuyến cáo rằng 'doInBackground()' nên định kỳ kiểm tra giá trị của 'isCancelled()' và "hoàn thành nhiệm vụ càng sớm càng tốt." –