gpt4 book ai didi

安卓12 : How to prevent activity restart on changing phone wallpaper?

转载 作者:行者123 更新时间:2023-12-04 23:36:30 27 4
gpt4 key购买 nike

在 Android 12 上,

  • 如果我们打开一个 Activity
  • 前往手机主屏幕更换壁纸
  • 切换回我们的 Activity , Activity 重新开始。

  • 它似乎与 Material You 主题有关。
    当我的应用程序进入前台时,我想禁用重新启动 Activity 。有办法吗?

    最佳答案

    这是一个非传统的配置更改。 “非传统”是指android:configChanges 无法阻止。 — 无论您喜欢与否,您的 Activity 都将被销毁并重新创建。
    如果您有 Configuration更改前后的对象,您可以通过调用 diff() 来确定发生了这种情况。在较新的Configuration将其与较旧的进行比较:

    val diff = resources.configuration.diff(vm.originalConfiguration)

    Log.d("WallpaperCCTest", "matches CONFIG_ASSETS_PATHS? ${(diff.toLong() and 0x80000000) != 0L}")
    在这里, vm.originalConfiguration指向较旧的 Configuration ,我们得到当前的 Configuration来自 Resources目的。 (diff.toLong() and 0x80000000) != 0L将评估为 true如果墙纸更改或类似的东西触发了配置更改。还有其他边缘案例——当索尼让谷歌在 2017 年增加对运行时资源覆盖 (RRO) 的支持时,整个“不可阻止的配置更改”就出现了。因此,其中一些“更改系统主题”应用程序可能会触发同样不可阻止的配置更改。
    Nguyễn Hoài Nam notes ,您可以从 onConfigurationChanged() 中检测到这一点自定义 Application .或者,让您的 View 模型保留之前的 Configuration并将其与 onCreate() 中的当前版本进行比较你的 Activity 。
    我在 this blog post 中有更多关于这个问题的信息. AFAIK,没有办法选择退出此配置更改,因此如果您的应用程序旨在避免配置更改,那么您可能会不走运。

    关于安卓12 : How to prevent activity restart on changing phone wallpaper?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69741827/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com