gpt4 book ai didi

android - 回收Imagebutton的drawable

转载 作者:行者123 更新时间:2023-11-29 21:34:23 25 4
gpt4 key购买 nike

在我的“主屏幕” fragment 中,我有几个图像按钮。图像按钮的 XML 是:

                <ImageButton
android:id="@+id/merkzettel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:background="#00000000"
android:scaleType="fitXY"
android:src="@drawable/dashboard_merkzettel_icon__selector" />

可绘制的 XML 选择器如下所示:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/icon_startseite_merkzettel_on"
android:state_pressed="true" />
<item android:drawable="@drawable/icon_startseite_merkzettel_off" />
</selector>

在旧设备 (Nexus S) 上,当我翻转设备一段时间(更改屏幕方向)时,出现异常:

java.lang.OutOfMemoryError: bitmap size exceeds VM budget
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:460)
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:336)
at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:697)
at android.content.res.Resources.loadDrawable(Resources.java:1709)
at android.content.res.Resources.getDrawable(Resources.java:581)
etcetc

这似乎是一个常见的问题,因为 Android 会在每次重新创建 Activity/Fragment 时重新创建可绘制的位图,对于可绘制对象,推荐的解决方案是在 onDestroy 中 drawable.recycle() 它们() 但我找不到合适的方法来获取 ImageButton 的可绘制对象。

有人知道这个的解决方案吗?

最佳答案

在 list 文件的 application 标签中添加 android:largeHeap = "true"然后运行你的项目。

喜欢下面

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.Light.NoTitleBar"
android:largeHeap="true">
<application/>

在销毁方法中

@Override
protected void onDestroy() {
super.onDestroy();
((BitmapDrawable)imagebutton.getDrawable()).getBitmap.recycle();
}

并在 onCreate 方法中检查此项。

if (imagebutton.getDrawable() == null){
// set your image button image here.
} else {
// nothing to do.
}

关于android - 回收Imagebutton的drawable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18738206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com