2012-08-30 75 views
1

早上好,android - 如何管理沒有內存泄漏的背景圖像?

在編寫我的第一個android應用程序的過程中,請耐心等待。

我想爲我使用的活動設置背景圖像。我的第一種方法,將其添加簡單地活動的佈局,

.... 
<ImageView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:contentDescription="@string/desc_background" 
    android:scaleType="centerCrop" 
    android:src="@drawable/background" 
    android:tint="#dd000022" /> 
.... 

不幸的是,這似乎導致內存泄漏,當我反覆調用某些活動。最後,我得到了堅持和發現這裏爲什麼Avoid memory leaks on Android

我的下一個想法應該是做上面提到的文章中的Romain稱爲「非常快,也是非常錯誤」的解決方案 - 將位圖保存在靜態字段或在Application對象中。

我發現這個主題的各種文章,但他們沒有一個似乎知道Romains點。另外我不清楚如何實施Romains解決方案。

任何提示如何處理android中的圖像沒有運行到內存泄漏將不勝感激。

非常感謝

馬丁

+0

你可以重寫onFinish(),並以某種方式處理那裏的圖像,以確保圖像不泄漏? – jtwigg

回答

-2

爲什麼不只是添加背景到您正在使用的佈局。

前使用的LinearLayout:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/layout1" 
    android:layout_width="fill_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/my_background" 
    android:keepScreenOn="true" 
    android:orientation="vertical" > 

    **REST OF LAYOUT HERE** 
</LinearLayout> 

,或者使用一個圖像中的所有活動創造自己的風格,然後應用在你表現在資源

/值增加styles.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

    <style name="MyTheme" parent="android:Theme"> 
     <item name="android:windowBackground">@drawable/my_background</item> 
     <item name="android:windowNoTitle">true</item> 
     <item name="android:windowFullscreen">true</item> 
    </style> 

</resources> 

和清單爲每個活動添加

android:theme="@style/MyTheme" 
+0

感謝馬里奧,這是我的第一個方法,但我無法找到如何使用這種方式顏色(色調)的背景和規模等。我寧願使用一個主題,但我使用操作欄sherlock,還沒有想出如何設置背景圖像沒有搞亂一切。 – dorjeduck

+0

Ahhh,抱歉,從未與Actionbar sherlock合作。您可能想要爲此目的修改問題或創建一個新問題。 (一定要發佈你試過的東西「搞砸了一切」) – mario

+0

另外,當我現在檢查它仍然似乎內存使用量加起來。我是否必須在onPause上以某種方式發佈圖像... – dorjeduck