当一个类包含静态的Context
对象时,Android Studio现在会显示警告。它说这会导致内存泄漏。不过,我注意到这也是在android库中完成的。例如,LocalBroacastManager
类有一个静态实例,它包含一个context
对象。静态上下文警告
那么作为内存泄漏有多糟?
我有一个singleton geofencing类,它在后台运行,并将boolean
保存到sharedPreferences
,指示用户是否在geofence中。为了保存首选项,我需要一个context
对象,但由于该方法是重写的方法,因此我无法传递上下文对象。
如何在不使用context
实例变量的情况下完成此任务?
实际上,大多数人发现应用程序对象作为单身持有者最近已经是一个时代错误。它不会优于使用静态。使用静态来创建单例没有问题,但不应该用来保存上下文。 –
将objets保存为静态并以这种方式访问它们意味着共享状态,这是避免的。另外,单身模式制作的旧单身不能被继承和扩展。如果只需要一个类的实例 - 只需创建一个实例并使用IoC,就可以在需要的地方使用该实例。我不确定为什么它是不合时宜的,Application类是单类和几乎在类/依赖关系树中的顶级类,就像在普通Java应用程序中持有main()方法的类一样,可以成为实例化ssingleton的根位。 – SadClown