gpt4 book ai didi

android - 动态壁纸 - "Set Wallpaper"- 需要使用事件来清除内存

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:29:48 28 4
gpt4 key购买 nike

我创建了一个动态壁纸,它通过将 70 张左右的图像存储在一个数组中来显示动画,然后一次显示一张以创建动画。我使用了CubeEngine的结构来设计它。在大多数情况下它是有效的。

当我第一次选择壁纸时,它会加载数组并显示动画。然后,当我单击“设置墙纸”按钮时,出现“OutOfMemoryError:位图大小超出 VM 预算”。我已经添加了 bitmap.recycle() 调用来尝试解决这个问题。

我已将 Log.d 放入所有事件中以尝试了解事件流。它看起来像点击“设置墙纸”按钮时,流程直接进入构造函数。

不会触发 onDestroy 事件或 onSurfaceChanged 事件,也不会触发除 onTouchEvent 之外的任何其他事件。

所以我的原始图像数组在内存中,当它执行构造函数时,它会尝试加载另一个包含图像的数组并耗尽内存。

当他们单击“设置墙纸”按钮时,我找不到一个事件来放入逻辑以清除我的原始数组。

有没有办法向“设置墙纸”按钮添加逻辑,或者是否有其他事件可以添加到我应该能够执行此操作的代码中?

我看到其他人也有这个问题,但还没有找到解决方案。

如有任何建议,我们将不胜感激。

最佳答案

如果您想进行任何加载或卸载,您可以通过覆盖 onVisibilityChanged(boolean visible) 来检测 WallpaperService.Engine 的可见性何时发生变化。
当可见性改变时,您还应该恢复或暂停 GlSurfaceView。

你可以在这里找到更多信息:
http://developer.android.com/reference/android/service/wallpaper/WallpaperService.Engine.html#onVisibilityChanged(boolean)
http://developer.android.com/reference/android/opengl/GLSurfaceView.html
查看 Activity 生命周期

关于android - 动态壁纸 - "Set Wallpaper"- 需要使用事件来清除内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8369425/

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