當一個類包含靜態的Context
對象時,Android Studio現在會顯示警告。它說這會導致內存泄漏。不過,我注意到這也是在android庫中完成的。例如,LocalBroacastManager
類有一個靜態實例,它包含一個context
對象。靜態上下文警告
那麼作爲內存泄漏有多糟?
我有一個singleton geofencing類,它在後臺運行,並將boolean
保存到sharedPreferences
,指示用戶是否在geofence中。爲了保存首選項,我需要一個context
對象,但由於該方法是重寫的方法,因此我無法傳遞上下文對象。
如何在不使用context
實例變量的情況下完成此任務?
實際上,大多數人發現應用程序對象作爲單身持有者最近已經是一個時代錯誤。它不會優於使用靜態。使用靜態來創建單例沒有問題,但不應該用來保存上下文。 –
將objets保存爲靜態並以這種方式訪問它們意味着共享狀態,這是避免的。另外,單身模式製作的舊單身不能被繼承和擴展。如果只需要一個類的實例 - 只需創建一個實例並使用IoC,就可以在需要的地方使用該實例。我不確定爲什麼它是不合時宜的,Application類是單類和幾乎在類/依賴關係樹中的頂級類,就像在普通Java應用程序中持有main()方法的類一樣,可以成爲實例化ssingleton的根位。 – SadClown