首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >onPause onResume alternative?

onPause onResume alternative?
EN

Stack Overflow用户
提问于 2014-03-15 19:20:58
回答 5查看 1.5K关注 0票数 2

我有点进退两难,不太清楚该如何解决。情况如下..。

我有一个多活动的应用程序,从它开始到应用程序退出的时候播放音乐。

但是,如果我使用onPause / onResume来检测活动何时被发送到后台,并在onPause中暂停音乐并在onResume中继续播放,则在调用startActivity()之后,当我启动下一个活动时,音乐“跳过”。

如果我不暂停/恢复onPause / onResume中的音乐,音乐就会顺利播放,但是如果按下主键并将活动发送到后面,音乐就不会停止。

是否有一种方法可以检测活动被发送到后台(比如使用定时器和应用程序标志),而不必使用onPause / onResume?

如果这是不可能的或太难实现(我仍在学习,因为我们都是),有没有办法创造一个“无形”的启动活动运行在后台处理这些事情,但从未见过?

一如既往,提前谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-03-15 20:08:54

,好的,这是一个解决方案,只要我用一种更有逻辑的方式来考虑它,它就会相当简单。

我所做的是:

  1. 创建一个名为activityCount的公共静态int。
  2. 在每个活动的onCreate函数中,我将activityCount增量为1。
  3. 我@覆盖公共的void ()和减缩activityCount一个,并调用super.finish()。
  4. 在onPause if activityCount == 1中,暂停音乐。
  5. 在onResume if activityCount == 1中,播放音乐。

这给了我想要的效果,连续播放音乐,但当点击主页按钮,音乐停止和恢复时,活动被恢复。

感谢所有的建议,因为它帮助我更合乎逻辑的思考。

票数 0
EN

Stack Overflow用户

发布于 2014-03-15 19:37:51

结果发现没有简单的方法可以绕过这件事。

你应该做的第一件事,就是把你的音乐流转移到一个服务上,这样它就不依赖于任何活动。

然后,当整个应用程序处于后台时,而不是当一个活动暂停时,您需要告诉服务停止。这个很好的答案建议在您的应用程序中添加一个计时器,并在活动暂停后等待几秒钟。在应用程序中没有其他活动被恢复--假设应用程序在后台。

我不会在应用程序中添加计时器,而是让您的音乐播放服务这样做(通知每个onPauseonResume中的服务)。另外,两秒钟对播放音乐来说太长了,我会从500毫秒开始,看看是否可以接受。

票数 2
EN

Stack Overflow用户

发布于 2014-03-15 19:31:18

很简单的IMHO

您正在尝试的是,如果新的活动是从您的应用程序,继续播放音乐,否则停止。

你可以用布尔标志来做这件事。

下面是算法:

在所有活动中,-boolean标志在onResume中设置为true

-Keep在onPause中暂停音乐的语句

在if(布尔标志)中-Put上述语句(以onPause表示)

-whenever一个事件碰巧启动了一个新的活动,例如在您的活动中单击了一个按钮等,清除事件侦听器中的标志(将其设置为false) -例如:按钮的onClickListener

这应该能行

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

https://stackoverflow.com/questions/22428565

复制
相关文章

相似问题

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