java - Activity中的成员变量被赋值之后,Activity被回收的时候内存才会被释放吗
大家讲道理
大家讲道理 2017-04-18 10:49:07
0
2
593

Activity中的成员变量被赋值之后,Actiity被回收的时候内存才会被释放吗
java中一个类中的成员变量被赋值之后,这个类对象被回收时,类中得成员变量才会被释放内存吗

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(2)
大家讲道理

这个问题应该归类到Java下. 只要是Activity所属的对象被static持有了, 那就导致整个Activity一直存在在内存中. 除非使用WearReference.

下面是一段类似的错误代码演示:

private static Context sContext;
public static void setContext(Context context) {
    sContext = context;
}

如果使用AndroidStudio, 那么IDE会有一段警告提醒: 不要赋值Context对象给static变量.

伊谢尔伦

问题描述不清楚, 标点符号都没有差评. 但是试一下回答:
全局对象应该只被static修饰符修饰的变量, static 修饰后的变量, 属于这个类(class), 或者说改类对应的所有对象, 而不属于某个对象. 从这个推导一下, 应该能认识到一个对象被回收就引起static被回收是不对的(被回收了其他对象怎么用)
这里说到了Activity, 再扩展一下. 一般情况下, 使用static变量引用当前对象是可以的(比如单例模式), 但是Android的设计上, Activity不是一般的类, 它有自己的生命周期, 到期就要被回收(因为功能太强大, 占用内存太对). 所以就有了用static引用当前Activity报内存泄漏的问题.

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!