Android 区分不同的活动转换

Android 区分不同的活动转换,android,lifecycle,Android,Lifecycle,我有一个活动,在列表活动中播放一些音频。用户还可以单击列表项并转到该数据的更详细视图。我希望音频在从一个活动过渡到另一个活动的过程中保持播放,并在细节活动激活后保持播放,但如果我的活动因任何其他原因暂停或停止,我还需要暂停音频 我的问题是,我当前在ListActivity的onPause()中暂停音频,因为我希望在用户离开我的活动时暂停音频。例如,当他们按Home或Back时。但是,我不希望在详细视图活动开始时音频暂停onPause()在这两种情况下都被调用,那么我如何区分这两种情况呢?您不应该

我有一个活动,在
列表活动中播放一些音频。用户还可以单击列表项并转到该数据的更详细视图。我希望音频在从一个活动过渡到另一个活动的过程中保持播放,并在细节活动激活后保持播放,但如果我的活动因任何其他原因暂停或停止,我还需要暂停音频


我的问题是,我当前在ListActivity的
onPause()
中暂停音频,因为我希望在用户离开我的活动时暂停音频。例如,当他们按Home或Back时。但是,我不希望在详细视图活动开始时音频暂停
onPause()
在这两种情况下都被调用,那么我如何区分这两种情况呢?

您不应该在另一种情况下这样做吗?这不是更容易吗?然后,您可以在一个或另一个活动暂停或退出时停止服务(取决于您想要的活动)。您还可以检查它是否已启动,并根据需要随时停止

如果我不明白你的问题,我会很抱歉。我看到你在这里有很多观点,所以也许我只是感到困惑

---自第三次发表评论后编辑:

  • A意向B:发送带有音乐名称的
    Intent
  • B onCreate:从
    Intent
    获取音乐名称。将标志
    x
    设置为
    true
  • B onResume:如果从A开始播放音乐,或者如果从B继续播放,则从上一个已知位置继续播放音乐
  • B后退按钮:覆盖并将
    x
    设置为
    false
    。实际上,你应该涵盖你的活动
    finish
    es的所有点
  • B onPause:停止音乐
    如果(x)
    ,将音乐的最后一个已知位置存储在内存中并停止服务
  • 在这里,我假设您希望音乐在返回A(这就是您所说的,这就是问题所在)时仍能继续播放,而不仅仅是在B之前。在我看来,设置x在早期非常重要,因为如果出现任何其他活动(电话,任何事),活动将在暂停时立即停止播放音乐(用户期望如此)。根据Android指南,只有当用户按下“后退”按钮或您完成活动时,您才知道您将回到A。您可以微调检查活动在任务中的位置(现在不记得怎么做)

    就我个人而言,我也不想在A上恢复播放(比如,B->call->home->A,也将步骤3应用于A),因为逻辑流程中的中断发生在那里

    警告:我会确保没有其他办法。我想看看你是否能提前知道将要展示的活动。2) 让任何音乐服务连接到您的任务(这可能吗?)


    无论如何,如果你找不到一个聪明的方法,就用我的解决方案吧。那将是我的建议。祝你好运。

    我不知道这里的服务对我有什么帮助。我已经可以在活动之间播放音频了,但是我仍然需要能够在除了我过渡到“细节”活动之外的所有活动都调用onPause或onStop时暂停音频。如果你对这个问题感到困惑,其他人也会感到困惑。我进行了编辑,希望能让它更清晰。据我所知,您希望播放音频:1)当活动A或B处于活动状态时;2)对列表中的项目是否处于活动状态(例如,音乐标题)进行精细控制。我相信您可以使用这两个onPause例程为服务标记一个布尔值,并且每当您在这两个例程上都有false时(当没有任何活动正在运行时),服务就会停止播放。您也可以在从列表中取消选择项目时停用这两个选项。。。(…)(…)在我看来,您正试图从活动A的暂停中猜测您是否将要看到活动B(在本例中,继续播放)或您将要在系统上的其他位置(然后停止播放)。我不知道,也许你可以从一个暂停处核实一下,但好吧,我认为我们不能安全地做到。是这样吗?如果不是,那么我的猜测到此为止,祝你好运,你说得对。只要活动A或B处于活动状态,我就想继续玩,否则就停止。向播放器传递一个标志是一个有趣的想法,我将使用它,但我认为活动a的onPause在活动B的onResume之前被调用,因此当两者都暂停时,播放器也会暂停音频。