Android Activity内部持有当前Activity的静态实例是否会造成内存泄漏?
public class LoginActivity extends BaseActivity{
public static LoginActivity instance;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
instance = this;
}
}
这样写是不是会造成内存泄漏,当Activity被销毁时,持有的instance实例会被释放吗
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
会。
当你敲那行代码时 Android Studio 就会告诉你,这么做会导致内存泄露,如下图
如果你不改,在后续的代码检查分析里 IDE 还会告知你将会导致内存的问题,如下图
https://juejin.im/entry/5768b...
会造成内存泄露,而且
Android Studio
会提示你这么做是会造成内存泄露的,建议你改正。如果实在想这么写,那么就请在Activity的onDestroy()
方法中这么做如果你不进行手动释放,静态变量是会常驻内存,照样会导致当前Activity无法被回收。so应该还是会内存泄漏的
如果你不手动置为空,肯定会造成内存泄漏的,静态变量的生命周期和整个应用的生命周期是一样的。
会,最好不要静态强引用所有 Context 类型的对象
会造成泄露,初始化后退出APP,但destory中不释放,你可以试一下在一个静态广播中输出一下instance,看一下他的地址和一开始初始化时的instance是一样的,然后再从进mainactivity中地址又变了