WallpaperManager 内存泄漏

WallpaperManager leaking memory

我正在使用 leakcanary 检测 Android 上的内存泄漏。第一次使用 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))
}

尝试调用 WallpaperManager.getInstance(this.getApplicationContext());

这看起来确实像是 AOSP 中的错误,您应该提交工单,但同时使用应用程序上下文应该可以避免泄漏。