用了Activity上下文去获取系统服务,导致Activity没办法被销毁
如果你在 Activity 中获取系统服务时使用了 Activity 上下文,但是在 Activity 生命周期结束时没有正确地释放该服务,那么这可能会导致 Activity 对象不能被销毁,从而引起内存泄漏。
要避免这种情况,你可以使用 Application 上下文代替 Activity 上下文来获取系统服务。在 Application 生命周期期间,该上下文对象一直存在,因此不会引起内存泄漏。
你可以在你的应用程序类中创建一个单例来存储 Application 上下文对象,然后在需要获取系统服务时使用该对象。例如:
public class MyApplication extends Application {
private static MyApplication sInstance;
@Override
public void onCreate() {
super.onCreate();
sInstance = this;
}
public static MyApplication getInstance() {
return sInstance;
}
}
然后,在需要获取系统服务时,可以使用以下代码:
MyApplication.getInstance().getSystemService(Context.WIFI_SERVICE);
这样可以避免因 Activity 生命周期结束时未正确释放系统服务而导致的内存泄漏问题。
如果跟UI相关的服务不能用ApplicationContext,还是得用Activity的,不然会报错