gpt4 book ai didi

android - 为动态壁纸缩放位图最节省内存的方法?

转载 作者:行者123 更新时间:2023-11-29 22:30:04 30 4
gpt4 key购买 nike

我不认为这是一个仅限于动态壁纸的问题,但这是我正在尝试处理的用例。

我创建了一个 256 x 256 位图作为动态壁纸的“图 block ”。我正在寻找一种内存有效的方式来缩放它以适应整个设备屏幕。每当设备来回旋转时,我都会继续遇到“超出 VM 内存”的问题,这表明我没有正确处理问题。

正在使用 Canvas 的 drawBitmap() 方法绘制图像。我尝试了以下选项:

  1. 创建位图,然后调用 createScaledBitmap()
  2. 创建位图,然后在我的 Canvas 上调用 scale()
  3. 创建位图,然后创建一个矩阵来“拉伸(stretch)”宽度和高度,并使用 preScale()
  4. 应用它

如果我调用 recycle(),动态壁纸运行一帧,然后崩溃。如果我根本不旋转设备,就不会发生内存不足崩溃。

感谢您的任何建议!

最佳答案

旋转时,您是否像大多数 Android 应用程序一样阻止应用程序“重新启动”?如果它“重新启动”(不确定手头的术语),它将触发您再次创建图像。很可能之前的图像还没有被收集,所以你的内存不足。您应该做的是确保应用程序在旋转时不会“重置”(我会记住正确的措辞),我相信这是一个应用程序属性。然后捕获旋转事件并在那里处理更改绘图方向而不分配任何新对象。

希望这是有道理的。

关于android - 为动态壁纸缩放位图最节省内存的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4402308/

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