作者tsaiminghan (nahgnimiast)
看板AndroidDev
標題[問題] out of memory?
時間Fri Dec 7 22:30:04 2012
我設定了全局的背景圖,還有請多使用selector設定圖片的按鈕。
<relative layout
android:background="@drawable/bg" />
結果發生了out of memory的訊息,試過把上面這句拿掉
就不會發生錯誤。
上網查了之後,大多數都是在說bitmap要怎麼取之類的
問請有沒有人知道要如何處理設寫在xml的圖檔方法?
或是設定背景圖有更好的方法?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.136.69.1
1F:推 sdyy:是不是你的背景圖真的太大了? 還是你的selector灌太多圖 12/07 22:57
2F:→ qweqweqweqwe:我覺得不完全是背景圖的關係 背景圖應該只是剛好 12/07 23:19
3F:→ qweqweqweqwe:踩到 OOM 的上限而已 也就是說可能要從別的地方改善 12/07 23:20
4F:推 givemepass:背景圖太大,轉個檔就好 12/07 23:56
問一下我看如果動態設定backgroupd時,可以先轉出比轉小的bitmap再設給UI(原圖
檔比較大)
可以如果直接寫在xml中,android會做這個動作嗎?如果不會我想我需要全部用動態來寫
看會不會改善。
開兩個activity就吃掉30多M
背景圖 800 x 1280,吃到記憶中是多少MB?
1bytes x 800 x 1280 還是 4bytes * 800 x 1280
※ 編輯: tsaiminghan 來自: 220.136.69.1 (12/08 00:57)
5F:→ qweqweqweqwe:google "eclipse MAT" 對於釐清mem 使用有點幫助 12/08 02:09
6F:推 foreverlyc:應該是你載入太多圖,有使用到ListView或Gallery? 12/08 02:38
沒用到,但是有背景圖,和許多有selector的按鈕,另外就是進入程式後
在oncreate有對一些View(有背景圖)重新設定長寬(利用layoutparams動態計算新的大小)
查到一些資料,先試試看有沒有用。
http://blog.csdn.net/micro_rat/article/details/6307067
http://www03.eyny.com/thread-8132236-1-1.html
http://www.myexception.cn/android/752138.html
http://www.linuxidc.com/Linux/2011-08/41274p2.htm
http://stackoverflow.com/questions/6092862/
will-calling-finish-from-an-activity-free-up-my-memory-space
http://stackoverflow.com/questions/5001682/
android-memory-management-in-activity-lifecycle
http://stackoverflow.com/questions/9248920/
drawables-resources-management-in-android
※ 編輯: tsaiminghan 來自: 220.136.69.1 (12/08 03:38)
7F:→ sdyy:你背景圖太大了啦 12/08 11:42
增加一個網站,比較完整詳細
http://my.oschina.net/ryanhoo/blog/93285
比上面簡單,但是也蠻清楚的。
使用softrefence來取得bitmap
http://www.longerian.me/?p=28
將seletor由xml改用java code的方法 (seletor對應的是StateListDrawable)
http://stackoverflow.com/questions/11242735/
change-xml-selector-values-from-java-code
※ 編輯: tsaiminghan 來自: 220.136.49.29 (12/09 21:22)