首页  >  问答  >  正文

java - Activity中的成员变量被赋值之后,Activity被回收的时候内存才会被释放吗

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

大家讲道理大家讲道理2744 天前606

全部回复(2)我来回复

  • 大家讲道理

    大家讲道理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变量.

    回复
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:51:07

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

    回复
    0
  • 取消回复