首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android 12:如何防止手机壁纸上的活动重启?

Android 12:如何防止手机壁纸上的活动重启?
EN

Stack Overflow用户
提问于 2021-10-27 15:54:31
回答 1查看 1.3K关注 0票数 20

在Android 12上

  1. 如果我们打开一个活动
  2. 转到手机的主屏幕上换墙纸
  3. 切换到我们的活动,活动重新启动。

它似乎是与你主题的材料有关。

当我的应用程序到达前台时,我想禁用活动的重新启动。有办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-31 18:39:06

这是一个非传统的配置变化。所谓“非传统”,我的意思是它不能被android:configChanges阻止--不管你喜欢与否,你的活动都会被破坏和重新创造。

如果更改前后都有Configuration对象,则可以通过在较新的Configuration上调用diff()将其与旧的Configuration进行比较来确定是否发生了此场景:

代码语言:javascript
复制
val diff = resources.configuration.diff(vm.originalConfiguration)

Log.d("WallpaperCCTest", "matches CONFIG_ASSETS_PATHS? ${(diff.toLong() and 0x80000000) != 0L}")

在这里,vm.originalConfiguration指向旧的Configuration,我们从Resources对象获得当前的Configuration。如果墙纸更改或类似的内容触发配置更改,(diff.toLong() and 0x80000000) != 0L将评估为true。这方面还有其他的优势--这个“不可阻挡的配置变化”是在2017年索尼让谷歌加入运行时资源覆盖(RRO)支持时出现的。因此,其中一些“更改系统主题”应用程序可能会触发同样不可阻挡的配置更改。

作为Nguyễn Hoài Nam注意到,您可以从自定义ApplicationonConfigurationChanged()中检测到这一点。或者,让您的视图模型保持先前的Configuration,并将其与您活动的onCreate()中的当前模型进行比较。

我在这篇博客文章中有更多关于这个问题的报道。AFAIK,没有办法选择退出这个配置变化,所以如果您的应用程序是为了避免配置更改,您可能是运气不好。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69741827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档