我有一個(gè)Activity帶有ConstraingLayout很多ImageViews 的 a(每張卡一個(gè))。獲勝后,通過單擊將出現(xiàn)的 ImageView,將Activity“重新加載”顯示一組新的牌來玩。問題是每次獲勝后,加注使用的內(nèi)存Activity而不是返回初始使用量。這會(huì)導(dǎo)致OutOfMemory Exception某些內(nèi)存不足的設(shè)備(例如 Nexus 7)。:(邏輯是:在onCreate方法中,我設(shè)置了ConstraintLayout30 ImageViews(卡片的正面)和其他 30 ImageViews(卡片的背面)對(duì)于每個(gè)ImageView(正面和背面),我OnClickListener通過縮放可繪制資源來設(shè)置和圖像每次用戶點(diǎn)擊一個(gè)時(shí)ImageView,我將卡片兩側(cè)的 alpha 設(shè)置為僅顯示正確的一面如果用戶找到所有匹配項(xiàng),將出現(xiàn) win 視圖:如果用戶單擊它,將調(diào)用 win 方法,該方法“重新加載活動(dòng)”在的第一次GiocaMemory運(yùn)行AndroidStudio是profiler:獲勝后(第二次獲勝后onCreate)使用的內(nèi)存為:現(xiàn)在Java內(nèi)存使用量為28,1 MB,而不是返回初始值25,2 MB。屏幕截圖指的是具有 16 個(gè)框的布局。使用 30 盒布局,使用的內(nèi)存增加了很多。(例如從 49 MB 到 83 MB)我可能會(huì)說圖像的大小調(diào)整得足夠多,以便使用盡可能少的內(nèi)存,所以也許它們不是問題所在。如果我錯(cuò)了請(qǐng)告訴我。為什么每次贏后使用的MBJava都會(huì)增加?你能幫我找到我留在代碼中的一些內(nèi)存泄漏嗎?我用來“重新加載”活動(dòng)的方式GiocaMemory是正確的,還是有其他方式可以讓我釋放更多資源?我發(fā)現(xiàn)很難找到它們,因?yàn)槲覍?duì) Android 編程還比較陌生,尤其是因?yàn)槲規(guī)缀鯊奈从龅竭^與內(nèi)存使用過多相關(guān)的問題。
1 回答

吃雞游戲
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
您是否正確地放棄了 AudioManager 中的焦點(diǎn)偵聽器?
AudioManager#abandonAudioFocus(OnAudioFocusChangeListener listener)
實(shí)際的 OOM 可能是所提到的非回收列表的結(jié)果,但這可能是內(nèi)存泄漏的原因。
添加回答
舉報(bào)
0/150
提交
取消