Có thể nào, từ bên trong AsyncTask không phải là lớp bên trong của lớp Activity đang hoạt động, để tham chiếu đến cá thể Hoạt động được khởi tạo thực thi AsyncTask?Nhận tham chiếu đến hoạt động gọi từ AsyncTask (KHÔNG phải là lớp bên trong)
Tôi biết là this thread, tuy nhiên nó không chính xác giải quyết cách tham khảo Hoạt động gọi điện. Một số gợi ý chuyển một tham chiếu đến Activity như một tham số cho constructor AsyncTask, tuy nhiên, nó được báo cáo rằng làm như vậy sẽ luôn dẫn đến một NullPointerException.
Vì vậy, tôi đang thua lỗ. AsyncTask của tôi cung cấp chức năng mạnh mẽ và tôi không muốn phải sao chép nó dưới dạng lớp bên trong trong mọi hoạt động muốn sử dụng nó. Phải có một giải pháp thanh lịch.
Point đưa vào chỉ * cố gắng * nó cho bản thân mình đầu tiên. Tôi tò mò như thế nào bạn sẽ xử lý tình hình của tôi sau đó: Nó không có gì phức tạp; Về cơ bản, tôi đang cố gắng tạo một DownloadFileTask để thực hiện một yêu cầu GET cơ bản trên các URL được truyền, và sau đó ứng dụng sẽ làm những việc khác nhau với các tệp đã tải xuống dựa trên hoạt động/trạng thái hiện tại. Tôi có các hoạt động khác nhau cần tải xuống tệp cho các mục đích khác nhau. Điều này có nên thực hiện tốt hơn với một dịch vụ hoặc một số giải pháp khác không? – stormin986
Ah, tôi hiểu rồi. Bạn có hai lựa chọn khi tôi nhìn thấy nó. Một là để làm cho 'DownloadFileTask' công khai nhưng trừu tượng, và có các lớp bên trong riêng tư thực hiện điều đó cho những thứ duy nhất cho một hoạt động cụ thể. Cách khác là làm cho 'DownloadFileTask' công khai và truyền * cái gì đó * vào hàm tạo. Trong trường hợp này, để giảm thiểu sự ghép nối, có thể bạn không muốn truyền một 'Hoạt động', nhưng một số loại giao diện khác giới hạn những gì mà 'AsyncTask' có thể làm. Bằng cách đó, bạn có thể chọn triển khai giao diện trên 'Hoạt động', hoặc dưới dạng một đối tượng riêng biệt hoặc bất kỳ thứ gì. – CommonsWare
CW, bạn đã rất hữu ích trên rất nhiều của tôi? S, vì vậy cảm ơn! Nếu tôi thực sự có thể chuyển một thể hiện Hoạt động của tôi cho AsyncTask công cộng, tôi nghĩ đó là cách tốt nhất để đến đây. Bạn đề cập đến giảm thiểu khớp nối ... chính xác những gì bạn có nghĩa là bởi điều này và những loại tình huống nào bạn thường muốn tránh với nó? – stormin986