暂停时玩家活动被破坏 - 如何重现?

问题描述 投票:0回答:1

我的应用程序使用

ExoPlayer
来播放音频。它有一个
PlayerActivity
,其中有播放/暂停按钮。当用户继续通过前台服务收听音频时,此活动通常在后台进行。

我的一些用户报告说,当

PlayerActivity
暂停并处于后台时,一段时间后他们将其恢复到前台,该 Activity 已被系统销毁。例如,seekbar 位于 0,mp3 文件显示长度为 0。

所以我怀疑某种能量设置会杀死活动。我尝试在模拟器上重现此错误,但无法成功。

我尝试过的:

  • 我已在 DevOptions 中激活“不保留活动”
  • 我已在 DevOptions 中将后台进程设置为“无后台进程”

enter image description here

  • 我还将电池状态设置为 1%,希望“杀死”能量模式能够启动。

enter image description here

所以我播放音频,单击“暂停”,将 Activity 置于后台,打开一些随机应用程序,然后将其重新启动,但

PlayerActvity
看起来不错。一切都在它应该的样子。

你们知道我如何重现用户遇到的错误吗?我对此一无所知。感谢您的帮助。

android
1个回答
0
投票

这非常简单 - 只需从最近的活动中删除您的活动即可。您的服务应该保持不变并且仍然应该播放音频,因为您只删除应用程序的 GUI 部分

并记住,系统可以像这样管理您的

Activity
,理论上它可以在用户交互期间随时从前台删除(在非常非常有压力的情况下)。当您的
Activity
被“归位”时,即使在 3 秒后,您也无法确定再次运行/带回它时它会保持不变

解决方案是首先处理

savedInstanceState
,然后你必须在后台(服务)和前台(活动)之间实现某种通信 - 当
Activity
从头开始(出于任何你无法控制的原因)和smth在后台工作,它应该将其状态(在您的情况下,例如播放状态、搜索位置)发送到
Activity

© www.soinside.com 2019 - 2024. All rights reserved.