【问题标题】:Do not allow multiple instances of an activity of an Android app不允许 Android 应用的 Activity 有多个实例
【发布时间】:2013-02-07 22:31:09
【问题描述】:

我正在尝试为 Android 创建一个非常简单的应用程序,它可以播放音乐文件(我真的才刚刚开始接触 Android)。我只有一个 Activity 在应用程序启动时启动,它开始播放音乐文件。我需要的是该活动始终运行(播放音乐),无论您按后退还是主页按钮,除非您明确告诉它从“设置”菜单中关闭,如果您尝试再次运行它,它应该只是恢复该活动到前面(基本上,其他所有玩家的工作方式)。但是,对我来说,当我按下返回以返回菜单屏幕并再次单击该应用程序时,它会运行另一个活动实例(我可以说,因为音乐加倍)。我能做些什么来防止这种情况发生?非常感谢。

【问题讨论】:

标签: android


【解决方案1】:

对于在后台播放音乐,我建议您使用service

【讨论】:

    【解决方案2】:

    在清单文件中指定 android:launchMode= "singleInstance"。这意味着您的活动是您的整个应用程序。

    不要忘记保存您的音乐时间状态。当声音结束播放时,使用SharedPreferences 保存第二个整数,并在onResume() 方法中恢复状态。

    不幸的是,当活动被破坏时,您无法在按下返回按钮后播放音乐。如果您希望按照其他答案的建议执行此操作,则必须启动服务。原因是您需要一个 Context 对象来播放音乐,并且在调用onDestroy() 方法后将不再可用。

    http://developer.android.com/guide/topics/media/mediaplayer.html 您可以在此处找到在服务中播放媒体文件的示例。

    【讨论】:

    • 试过了,好像不行。我仍然得到多个实例。我读到不可能获得应用程序本身的多个实例,但不知何故,这似乎正在发生。
    • 好的,让我再解释一下。我希望应用程序在单击返回或主页按钮时不会停止播放文件(我已经完成了),如果我最小化应用程序,然后单击其图标图标,它应该只是最大化,而不是启动另一个实例应用程序或活动(目前不确定是哪一个)。例如,有点像 doubleTwist 的工作原理。
    • 我得到了您想要实现的目标,但在按下返回或主页按钮后,由于文件已被破坏/暂停,因此无法继续播放文件。您应该改用服务。您无法最小化您的应用并继续在您的活动中播放音乐。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-02
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多