首頁  >  問答  >  主體

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

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

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

全部回覆(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
  • 取消回覆