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

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