我的 Wear OS 应用程序遇到问题,当我在设备空闲且屏幕关闭后尝试从最近的应用程序列表中重新打开它时,它会冻结。以下是导致冻结的事件顺序:
当我查看日志时,我注意到应用程序冻结时没有生成新日志,这表明在此期间没有调用 onResume() 或 onStart() 等 Activity 生命周期方法。这似乎表明该应用程序没有完全重新进入前台状态。但是,如果我从头开始打开应用程序(而不是从最近的应用程序),它会打开没有任何问题(因为它完全重新启动应用程序)。
奇怪的是,如果我让应用程序处于冻结状态,并且设备在通常的 15 秒超时后再次进入睡眠状态,则所有先前排队的操作(例如我期望 onResume() 冻结的生命周期日志)会突然出现在日志中。
这是我迄今为止尝试过的:
是否有人在 Wear OS 上经历过类似的行为,或者对可能导致应用程序以这种方式冻结的原因有任何想法?
感谢您的任何见解或建议!
这不是您问题的答案,而是额外的见解。
首先,您的分析非常出色。这是我自己发现的。
我注意到,在您描述的条件下,即使是空白的 Flutter 应用程序(使用默认设置创建)在 Wear OS 设备上也会出现相同的冻结行为。这表明问题源于 Flutter 与 Wear OS 交互的具体方式,而不是应用程序代码中的问题。
从技术角度来看,这个问题似乎是 Wear OS 独有的,因为与标准 Android 设备相比,操作系统管理应用程序生命周期和后台进程的方式存在差异。 Wear OS 对后台活动施加更严格的限制,以节省电池寿命并优化资源有限的可穿戴设备的性能 (Link)。
我目前也在寻找这个,并将提供任何发现的更新。