AsyncTask, như tên của nó đã nói, đang chạy không đồng bộ với thread UI, phương pháp onPostExecute sẽ được gọi tại một số thời điểm trong tương lai, khi doInBackground kết thúc. Chúng ta không quan tâm khi phương thức onPostExecute sẽ được gọi (thực ra không có cách nào để nói tại thời gian xây dựng dự án), điều duy nhất chúng ta quan tâm là phương thức onPostExecute được đảm bảo được gọi đúng bởi khung bên dưới tại một số điểm trong tương lai. Vì vậy, mục đích của phương thức onPostExecute là để xử lý kết quả trả về từ chuỗi công nhân, đây cũng là lý do tại sao đối số duy nhất của phương thức onPostExecute là kết quả được trả về từ phương thức doInBackground.
Tôi có một số hoạt động trong hoạt động cụ thể đó yêu cầu giá trị được trả về từ phương pháp onPostExecute. Tôi giải quyết điều này như thế nào?
Nguyên nhân, bạn có thể tạo một số biến mẫu (hoặc sử dụng mẫu listerner) trong lớp Hoạt động lưu trữ kết quả khi được trả về và sẵn sàng trong phương thức onPostExecute. Vấn đề là bạn không bao giờ biết khi nào kết quả này đã sẵn sàng bên ngoài phương thức onPostExecute tại thời gian xây dựng dự án, vì nó thực sự được xác định trong thời gian chạy ứng dụng. Trừ khi bạn viết một số cơ chế chờ đợi liên tục bỏ phiếu kết quả, kết quả là hy sinh lợi ích của AsyncTask, ví dụ, API AsyncTask.get() tích hợp giúp AsyncTask chạy đồng bộ với chuỗi giao diện người dùng và trả về kết quả cho Hoạt động.
Cách tốt nhất là thay đổi thiết kế của bạn và di chuyển mã hoạt động yêu cầu kết quả trả về từ AsyncTask vào phương thức onPostExecute. hi vọng điêu nay co ich.
xem http://stackoverflow.com/questions/5457493/asynctask-return-value và http://stackoverflow.com/questions/5457493/asynctask-return-value – ngesh
[Xem câu trả lời này] (http: // stackoverflow.com/questions/7618614/return-data-from-asynctask-class/7618705#7618705) –