gpt4 book ai didi

android - 在广播 act=android.intent.action.SCREEN_OFF 时佩戴 OS ANR

转载 作者:行者123 更新时间:2023-12-05 03:27:35 29 4
gpt4 key购买 nike

我的 WearOS 应用经常收到关于 android.intent.action.SCREEN_OFF 广播的 ANR,我还没有注册。

它主要发生在 Samsung Galaxy Watch4 设备上,例如我正在开发的设备。

这个案子很复杂,谷歌搜索也没什么帮助。这是流程,请耐心等待:

  1. 应用正常启动,按预期运行;
  2. watch 向下转动,屏幕熄灭。到目前为止一切顺利;
  3. 我等待大约 20 秒,让 Wear OS 将我的应用移至后台并返回表盘;
  4. 我在 ADB 中看到该应用正在运行;
  5. 我打开 watch ,屏幕亮起,我看到表盘,我的应用程序在后台;
  6. 我将 watch 重新调低,等待几秒钟,然后它因 ANR 崩溃了

原因: Intent 广播 { act=android.intent.action.SCREEN_OFF flg=0x50200010(有额外内容)}

我已经开发了一段时间,我知道如何阅读日志,但我在那里没有发现任何可以引导我注册此广播但不响应的内容。我能想到的唯一可能的原因是我使用的进口商品很少。他们在这里:

dependencies {
implementation 'com.google.android.gms:play-services-wearable:17.1.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.2.1'
implementation 'androidx.wear:wear:1.2.0'
implementation 'androidx.core:core-splashscreen:1.0.0-beta01'
implementation 'androidx.preference:preference:1.2.0'
implementation 'com.mcxiaoke.volley:library:1.0.19'
implementation 'androidx.viewpager2:viewpager2:1.0.0'
}

开发工具包:

        minSdk 25
targetSdk 31

我确实怀疑启动画面离屏幕最近并将其移除,但仍然发生了 ANR。

我什至尝试实现我自己的 BroadcastReceiver,它不会在 onPause 上注销以便给系统一些答案,甚至添加 this.goAsync().finish(); 到它的 onReceive(),但没有帮助。

有没有人碰到过这个?任何帮助将不胜感激!

最佳答案

2022-04-24 更新:

在 Galaxy 4 watch FVC8 版本的最后一次 OTA 更新之后,该问题似乎已得到解决。由于历史原因,在 FVC8 之前的版本仍然有效时将其保留在这里。


几个小时后,在 Yuri Schimke 的评论之后,我了解到有一个错误报告给谷歌正是为此。

https://issuetracker.google.com/issues/220190983

我能够通过为 BOTH Intent.ACTION_SCREEN_OFF AND 实现 BroadcastReceiver 来规避这个问题>Intent.ACTION_SCREEN_ON 除了记录事件和调用 this.goAsync().finish(); 之外什么都不做。此 BroadcastReceiveronCreate 上注册,在 onDestroy 上注销。

这样就不会再发生 ANR,尽管我还不确定它对电池有什么影响。

关于android - 在广播 act=android.intent.action.SCREEN_OFF 时佩戴 OS ANR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71436827/

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