前幾天去面試時遇到個技術(shù)問了個讓我一臉懵逼的問題掌逛,大概是他在ActivityB中需要ActivityA的實(shí)例抹腿,所以他在ActivityA中搞了個靜態(tài)變量引用ActivityA實(shí)例茫负。然后直接在ActivityB中使用。
至于我為啥懵逼希俩,那是因為他之前剛問過我內(nèi)存泄漏的問題
內(nèi)存泄漏嘛棚贾,簡單說就是該釋放的內(nèi)存沒釋放掉
相信大家都知道在android中static修飾的變量的生命周期等同于整個app的運(yùn)行周期。如果如上文中那么做弯淘,假設(shè)不把ActivityA中引用自己的靜態(tài)變量置為null绿店,那么ActivityA的實(shí)例就會一直存在直到app運(yùn)行結(jié)束,即使在ActivityA中調(diào)用finish()來關(guān)閉ActivityA庐橙,onDestroy即使被調(diào)用ActivityA也依然存在假勿,ActivityA中類變量也沒有釋放掉,內(nèi)存空間也依然被占用态鳖。
這就是非常典型的內(nèi)存泄漏嘛转培。
所以記下這個來時時提醒自己,項目中慎用static郁惜。