我们都知道,静态存储上下文对象(而不是应用程序上下文)是一种不好的做法,因为它可能导致内存泄漏。但是,您可以存储从上下文对象派生的系统服务吗?例如ConnectivityManager
?
// Is this okay?
static ConnectivityMananger connectivityManager;
...
connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
答案 0 :(得分:3)
我建议使用应用程序Context
来获得这样的系统服务:
connectivityManager = (ConnectivityManager) context.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
可能所有系统服务都在内部使用应用程序Context
,但是这种方法越来越安全,以额外的方法调用为代价。
如果系统服务正在使用应用程序Context
,则在获取系统服务时不会泄漏Context
。您是否会因使用系统服务而泄漏其他任何东西。