我知道有很多問題,有關Android在不同情況下的OOM論壇,但我找不到一個完整的解決方案。OutOfMemory動畫在ViewFlipper
我有一個活動,用戶可以在多個動畫之間滾動。由於只有動畫在滾動時纔會移動,並且在開始時它必須移動而沒有用戶交互,因此我使用了內部帶有動畫的ViewFlipper。如下圖所示:
問題是,在3.0以上的平板電腦和設備上,在翻轉一些動畫並播放它們後拋出OOM。我試過到現在爲止,爲了解決這個問題:
- 我使用
BitmapFactory.Options
縮小的動畫圖像(我 跟着教程Loading Large Bitmaps Efficiently tutorial)。我沒有從教程中實現的唯一的事情就是緩存。 - 由於有許多動畫,這麼多的位圖,我 在時刻(當前視圖中,一個上離開 和右邊的一個)加載只有3動畫,但添加和刪除位圖具有 減慢太多的應用程序。
- 我試圖通過手動調用可能幫助的所有內容來使垃圾回收器更快地釋放我的圖像:
setCallback(null)
,setImageDrawable(null)
,destroy()
,destroyDrawingCache()
(AdView的最後2個)。我甚至tryedrecycle()
(位圖),卻引起其他異常
上述變化有一定的改善後,但我還是收到OOM模擬器上的Android 4.x的WVGA854或WVGA800(後較長一段的時間)。但是,即使它沒有超出OOM,內存分析也顯示80%的負載在有問題的設備上開始。另外,由於動畫的刪除和添加,用戶體驗在所有設備上都不好。
我開始認爲更多的是架構/設計問題。 這可能是一個模擬器問題?你現在比DDMS更好的內存分析器嗎?
我會爲任何建議非常感謝,我不知道還有什麼可以嘗試我使用這個:)
你試圖使用System.gc()的? –
謝謝!正如我在下面說的,似乎我們應該儘量避免這個問題(http://stackoverflow.com/questions/3117429/garbage-collector-in-android)顯示。但我會嘗試看看其中的差異。 – Laviniux