Don't forget to cleanup wallpaper colors changed listener
This commit is contained in:
parent
6a4739d9bc
commit
9f68d35678
@ -19,7 +19,6 @@ import de.mm20.launcher2.ui.LauncherMainScreen
|
|||||||
import de.mm20.launcher2.ui.LauncherTheme
|
import de.mm20.launcher2.ui.LauncherTheme
|
||||||
import de.mm20.launcher2.ui.locals.LocalAppWidgetHost
|
import de.mm20.launcher2.ui.locals.LocalAppWidgetHost
|
||||||
import de.mm20.launcher2.ui.locals.LocalColorScheme
|
import de.mm20.launcher2.ui.locals.LocalColorScheme
|
||||||
import de.mm20.launcher2.ui.locals.LocalWallpaperColors
|
|
||||||
import de.mm20.launcher2.ui.locals.LocalWindowSize
|
import de.mm20.launcher2.ui.locals.LocalWindowSize
|
||||||
import de.mm20.launcher2.ui.theme.WallpaperColors
|
import de.mm20.launcher2.ui.theme.WallpaperColors
|
||||||
import de.mm20.launcher2.ui.theme.colors.DefaultColorScheme
|
import de.mm20.launcher2.ui.theme.colors.DefaultColorScheme
|
||||||
@ -47,14 +46,18 @@ class ComposeActivity : AppCompatActivity() {
|
|||||||
|
|
||||||
var wallpaperColors by remember { mutableStateOf<WallpaperColors?>(null) }
|
var wallpaperColors by remember { mutableStateOf<WallpaperColors?>(null) }
|
||||||
|
|
||||||
LaunchedEffect(null) {
|
DisposableEffect(null) {
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
|
||||||
val wallpaperManager = WallpaperManager.getInstance(this@ComposeActivity)
|
val wallpaperManager = WallpaperManager.getInstance(this@ComposeActivity)
|
||||||
wallpaperManager.addOnColorsChangedListener({ colors, which ->
|
val callback = { colors: android.app.WallpaperColors?, which: Int ->
|
||||||
if (colors != null && which or WallpaperManager.FLAG_SYSTEM != 0) {
|
if (colors != null && which or WallpaperManager.FLAG_SYSTEM != 0) {
|
||||||
wallpaperColors = WallpaperColors.fromPlatformType(colors)
|
wallpaperColors = WallpaperColors.fromPlatformType(colors)
|
||||||
}
|
}
|
||||||
}, Handler(Looper.getMainLooper()))
|
}
|
||||||
|
wallpaperManager.addOnColorsChangedListener(
|
||||||
|
callback,
|
||||||
|
Handler(Looper.getMainLooper())
|
||||||
|
)
|
||||||
|
|
||||||
lifecycleScope.launch {
|
lifecycleScope.launch {
|
||||||
val colors = withContext(Dispatchers.IO) {
|
val colors = withContext(Dispatchers.IO) {
|
||||||
@ -62,7 +65,11 @@ class ComposeActivity : AppCompatActivity() {
|
|||||||
} ?: return@launch
|
} ?: return@launch
|
||||||
wallpaperColors = WallpaperColors.fromPlatformType(colors)
|
wallpaperColors = WallpaperColors.fromPlatformType(colors)
|
||||||
}
|
}
|
||||||
|
return@DisposableEffect onDispose {
|
||||||
|
wallpaperManager.removeOnColorsChangedListener(callback)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
onDispose {}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (windowSize.height <= 0 || windowSize.width <= 0) return@setContent
|
if (windowSize.height <= 0 || windowSize.width <= 0) return@setContent
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user