问题描述
我在 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))
}
解决方法
尝试拨打 WallpaperManager.getInstance(this.getApplicationContext());
这绝对看起来像是 AOSP 中的一个错误,您应该提交一个工单,但同时使用应用上下文应该可以避免泄漏。