2012-04-29 36 views
6

Tôi tạo một ứng dụng với một số hoạt động và tôi có một AsyncTask bên ngoài bất kỳ hoạt động nào được khởi chạy vào lúc bắt đầu của ứng dụng. Câu hỏi của tôi là làm thế nào tôi có thể nhận được bối cảnh ứng dụng hiện tại trong lớp Asynctask?Android: Làm thế nào để có được bối cảnh ứng dụng hiện tại trong AsyncTask?

Thank cho câu trả lời của bạn

Trả lời

5

Bạn có thể vượt qua toàn bộ Activity và việc sử dụng getApplicationContext() bên trong AsyncTask.

+1

Tôi không thể sử dụng phương thức này trong không có hoạt động phân lớp con. – user1364017

+1

Tôi nghĩ rằng việc sử dụng điều này an toàn hơn là một thành viên refference như câu trả lời khác cho thấy – quinestor

5

Chuyển ngữ cảnh dưới dạng thông số cho hàm tạo của AsyncTask và lưu nó dưới dạng thành viên. Nhưng hãy quan tâm đến kiểu ngữ cảnh nào bạn truyền cho hàm tạo.

Khi tác vụ có thể chạy trong suốt vòng đời của Hoạt động, bạn nên chuyển ngữ cảnh Ứng dụng thay vì ngữ cảnh Hoạt động. Khi tác vụ chỉ chạy trong suốt thời gian hoạt động, bạn có thể chuyển đối tượng Hoạt động dưới dạng ngữ cảnh.

+0

Vấn đề là hoạt động hiện tại sẽ thay đổi và do đó tham số của tôi AsyncTask của tôi sẽ sai – user1364017

+0

Vì vậy, âm thanh giống như thời gian cuộc sống của nhiệm vụ là ràng buộc với hoạt động của cả đời. Sau đó, bạn có thể sử dụng đối tượng Hoạt động dưới dạng ngữ cảnh nhưng bạn nên hủy tác vụ trong phương thức onDestroy() của hoạt động để đối tượng Hoạt động cũ có thể thu thập rác. – Flo

+0

Cuộc sống của nhiệm vụ bị ràng buộc trong lớp singleton được instancied bởi một hoạt động. Vì vậy, nhiệm vụ tiếp tục sau khi hoạt động cuộc sống – user1364017

Các vấn đề liên quan