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

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報記憶體洩漏的問題.

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板