我创建了一款动态壁纸,用户可以选择自己的文件作为背景图片。
问题在于,当我点击“设置壁纸”时,它会启动我的壁纸服务。如果我再次进入我的动态壁纸并再次点击“设置壁纸”,它似乎没有关闭先前的服务,而只是又运行了一个新的服务。这意味着每次我点击“设置壁纸”时,都会将用户SD卡中的图像读入Bitmap变量中,并且每次使用的内存都会增加,最终会抛出OutOfMemoryError。
我的onDestroy()方法将所有的Bitmap引用设置为null,并执行System.gc(),但在这种情况下,似乎在覆盖相同的壁纸时未能销毁服务。
例如,如果我已经设置好了我的壁纸,然后选择设置“Galaxy”动态壁纸,这将销毁我的壁纸服务,但当我再次设置我的壁纸时,它不会销毁原始服务。
是否有人遇到过这种情况?我应该采取不同的方法来进行nullify和垃圾回收吗?非常感谢任何帮助。