[英]Android: avoiding passing activity to singletons by storing inside the Application class = memory leak?
我有一些單例需要上下文信息,因為它們可能必須顯示對話框。 到目前為止,我已經將相關的上下文傳遞給了單例,但這越來越導致內存泄漏。 我想知道是否在應用程序類中存儲對當前活動的引用是否可以解決此問題。 由於變量每次啟動新活動時都會被覆蓋,因此不應導致內存泄漏,但也可以從應用程序中的所有非活動類訪問該變量。
在我的應用程序類中:
private static Activity currentForegroundActivity;
public static void setCurrentlyVisibleActivity(Activity activity) {
currentForegroundActivity = activity;
}
public static Activity getCurrentlyVisibleActivity() {
return currentForegroundActivity;
}
在每個活動中:
@Override
public void onResume() {
super.onResume();
App.setCurrentlyVisibleActivity(this);
在每個單例內:
methodThatRequiresUI(App.getCurrentlyVisibleActivity);
您可以預見這條路線上有什么陷阱嗎? 我想操作系統可以從內存中清除應用程序類,但是如果發生這種情況,應用程序本身將重新啟動-不會導致空指針。 在調用該set之前,應用程序啟動期間可能還會調用get方法-但我可以編寫檢查方法來解決該問題。
那怎么辦
使實用程序方法與靜態方法一起使用,並將上下文作為參數傳遞。
使用委托(通過匿名類或接口)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.