java - 静态存储系统服务会导致内存泄漏吗?

标签 java android android-context

我们都知道静态存储上下文对象(应用程序上下文除外)是不好的做法,因为它会导致内存泄漏。但是你能存储从上下文对象派生的系统服务吗?比如ConnectivityManager?

// Is this okay?
static ConnectivityMananger connectivityManager;
...
connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

最佳答案

我建议使用应用程序 Context 来获取这样的系统服务:

connectivityManager = (ConnectivityManager) context.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);

可能所有系统服务都在内部使用应用程序 Context,但这种方法越来越安全,因为需要额外调用方法。

如果系统服务正在使用应用程序Context,则在获取系统服务时不会泄露Context。您是否通过使用系统服务泄漏任何其他内容可能会有所不同。

关于java - 静态存储系统服务会导致内存泄漏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54633492/

相关文章:

android - runOnUiThread() 方法和@UiThreadTest 注解的区别

java - 由 : java. 引起 lang.ClassNotFoundException: 没有找到类 "okhttp3.internal.Platform"

android - 如何判断 Android 应用程序是否真的在泄漏内存?

java - 尝试将 hyperledger Fabric SDK 与 Spring REST Controller 集成时出现以下错误

java - 当图标为空时,JLabel 出现意外的文本对齐行为

java - 为什么我不能在 Java 中调用添加到匿名类的方法?

Android 获取应用程序的 'Home' 数据目录

Java Checkstyle 严重级别继承意义?

android - 静态设置 onClickListener,内存泄漏?

java - 导入 android.content.Context 后无法解析上下文;还