【发布时间】:2011-05-25 14:51:39
【问题描述】:
我创建了一个动态壁纸,它将用户选择的文件作为背景图像。
我遇到的问题是,当我点击“设置壁纸”时,它会启动我的壁纸服务,然后如果我回到我的动态壁纸并再次点击“设置壁纸”,它似乎并没有关闭上一个服务,但也只是运行另一个。这意味着每次单击“设置壁纸”时,用户 SD 卡中的图像都会被读入位图变量并增加每次使用的内存,最终会引发 OutOfMemoryError。
我的 onDestroy() 方法使所有 Bitmap 引用无效并执行 System.gc(),但是在这种情况下,在其上设置相同的壁纸时似乎服务没有被破坏。
例如,如果我设置了壁纸,然后选择设置“银河”动态壁纸,这会破坏我的壁纸服务,但再次设置我的壁纸时,它不会破坏原来的服务。
以前有人遇到过这种情况吗?有没有我应该取消和垃圾收集的不同方法?任何帮助将不胜感激。
【问题讨论】: