为了能够在应用程序中的任何位置获取应用程序上下文,我创建了这样的 App 类:
public class App extends Application
{
private static Context mContext;
public static Context getContext()
{
return mContext;
}
@Override
public void onCreate()
{
super.onCreate();
mContext = this
}
}
它有效,并且在我的应用程序中的许多地方使用,我需要使用上下文(例如,加载资源)并且我无法注入任何其他上下文来使用。
但是,Android Studio 会发出警告,这种方法(静态上下文字段)会导致内存泄漏。
您是否知道如何避免静态上下文字段,但获得类似的功能?
切勿将静态上下文放置在您的应用程序中,因为它会导致无异常的内存泄漏,但是如果您仍然想在应用程序中使用静态上下文,您可以将上下文包装在 WeakReference 中,因此请更改
private static Context mContext;
to
private static WeakReference<Context> mContext;
并在创建时将其更改为
mContext = new WeakReference<>(Context);
最后使用获取上下文
public static Context getContext() {
return mContext.get();
}
如果您想研究有关 WeakRef 的更多信息,请使用下面的链接,https://developer.android.com/reference/java/lang/ref/WeakReference https://developer.android.com/reference/java/lang/ref/WeakReference
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)