android - 如何在没有内存泄漏的情况下管理背景图像?

时间:2012-08-30 15:17:39

标签: 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中的图像而不会遇到内存泄漏的提示将受到高度赞赏。

非常感谢

马丁

1 个答案:

答案 0 :(得分:-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>

或者为所有活动使用一个图像创建自己的样式,然后在清单中应用

你的res / values中的

添加了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"