Tôi đã đọc rằng đó là một sai lầm và một nguồn rò rỉ bộ nhớ trong ứng dụng Android để giữ một tham chiếu lâu dài đến một Ngữ cảnh.Android: Tham chiếu đến một bối cảnh và rò rỉ bộ nhớ
Nhưng tôi không hiểu nếu nó là ok để tạo ra một lớp trông như thế này một:
public class HelperClass {
private Context context;
public HelperClass(Context context) {
this.context = context;
}
public void myHelperMethod() {
// uses this.context
}
}
Và gọi nó từ một Hoạt động:
public class MyActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
HelperClass h = new HelperClass(this);
h.myHelperMethod();
}
...
}
Điều gì sẽ xảy ra nếu bạn có biến riêng với lớp trợ giúp như vậy trong hoạt động của bạn, có tham chiếu 'Ngữ cảnh'? – Peterdk
@Peterdk nếu biến của bạn đang giữ trường hợp Ngữ cảnh từ getApplicationContext(), không có vấn đề gì. Nhưng nếu bạn đang giữ ngữ cảnh từ một Hoạt động, hãy cẩn thận với rò rỉ bộ nhớ (giữ đúng trường hợp hơn từ các Hoạt động nhiều hơn mức cần thiết). Có lẽ bạn nên sử dụng một WeakReference để giữ trường hợp ngữ cảnh hoạt động và sử dụng một người nghe để biết khi nào ứng dụng của bạn đã thay đổi sang hoạt động khác. – marciowb