我在Android上使用leakcanary检测内存泄漏。第一次使用WallpaperManager。我不知道你在销毁的时候是recycle还是WallpaperManager。
val wallpaperManager = WallpaperManager.getInstance(this)
wallpaperManager.setStream(file.inputStream())我认为这两行代码导致了这个问题,因为如果我注释这两行代码,内存泄漏就不会发生。
private fun setWallpaper() {
val dir = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)!!.absoluteFile
val file = File("$dir${File.separator}wallpaper.jpg")
val wallpaperManager = WallpaperManager.getInstance(this)
wallpaperManager.setStream(file.inputStream())
toast(getString(R.string.wallpaper_set_successfully))
}

发布于 2021-01-09 22:49:05
尝试调用WallpaperManager.getInstance(this.getApplicationContext());
这看起来绝对像是AOSP中的一个bug,你应该提交一个工单,但同时使用应用程序上下文应该可以避免泄漏。
https://stackoverflow.com/questions/65613747
复制相似问题