Tôi đang cố đặt biến trong hoạt động thành kết quả của AsyncTask của tôi. Tôi đã đọc rằng tôi không thể trả về một biến và rằng tôi sẽ phải thiết lập biến trong hoạt động của tôi và sau đó thay đổi nó trong phương thức onPostExecute
.Đang đợi ASyncTask kết thúc hoặc biến được đặt
Vấn đề của tôi là sau khi AsyncTask kết thúc, tôi cần sử dụng biến đó. Tôi đang gặp rắc rối với điều này bởi vì tất cả các giải pháp tôi đã thử cho đến nay làm cho giao diện người dùng đóng băng và sau đó đi không đáp ứng.
Những gì tôi đã cố gắng cho đến nay:
while (!task.isCancelled()) {
// Wait...
}
Và
while (variable == null) {
// Wait ...
}
Là những gì tôi đang làm là cách tốt nhất để vượt qua một biến từ AsyncTask đến Hoạt động của tôi? Nếu đó là sau đó làm thế nào tôi có thể chờ đợi cho công việc để hoàn thành trong hoạt động mà không cần khóa giao diện người dùng?
Bạn không nên "chờ" cho 'AsyncTask'. Nó nên làm một cái gì đó khi nó được thực hiện, có lẽ trong 'onPostExecute()'. – Eric
Trong phương thức 'onPostExecute()' tôi thay đổi biến trong hoạt động của tôi thành kết quả. Những gì tôi đang cố gắng làm là đợi cho đến khi biến được thay đổi. – Dan
Chính xác - đừng làm điều này. Bản thân 'onPostExecute()' của 'AsyncTask' sẽ bắt đầu chuỗi các sự kiện mà bạn muốn xảy ra sau khi nhiệm vụ hoàn tất. Không có mã nào khác nên dựa vào nhiệm vụ đó. – Eric