Heim > Fragen und Antworten > Hauptteil
Activity中的成员变量被赋值之后,Actiity被回收的时候内存才会被释放吗
java中一个类中的成员变量被赋值之后,这个类对象被回收时,类中得成员变量才会被释放内存吗
大家讲道理2017-04-18 10:51:07
这个问题应该归类到Java下. 只要是Activity
所属的对象被static持有了, 那就导致整个Activity
一直存在在内存中. 除非使用WearReference
.
下面是一段类似的错误代码演示:
private static Context sContext;
public static void setContext(Context context) {
sContext = context;
}
如果使用AndroidStudio, 那么IDE会有一段警告提醒: 不要赋值Context对象给static变量.
伊谢尔伦2017-04-18 10:51:07
问题描述不清楚, 标点符号都没有差评. 但是试一下回答:
全局对象应该只被static修饰符修饰的变量, static 修饰后的变量, 属于这个类(class), 或者说改类对应的所有对象, 而不属于某个对象. 从这个推导一下, 应该能认识到一个对象被回收就引起static被回收是不对的(被回收了其他对象怎么用)
这里说到了Activity, 再扩展一下. 一般情况下, 使用static变量引用当前对象是可以的(比如单例模式), 但是Android的设计上, Activity不是一般的类, 它有自己的生命周期, 到期就要被回收(因为功能太强大, 占用内存太对). 所以就有了用static引用当前Activity报内存泄漏的问题.