活动停止/关闭时音乐服务停止?

Posted

技术标签:

【中文标题】活动停止/关闭时音乐服务停止?【英文标题】:Music service stops when the activity is stopped/closed? 【发布时间】:2012-05-06 14:14:35 【问题描述】:

我为我的应用程序(音乐播放器)创建了一个音乐服务,在进行了一些测试后,我发现了一个让我头疼的行为,因为我不知道如何解决它。

出于测试目的,我已经修改了服务,因此,一旦它启动,它就会从我的 sd 卡播放特定的 mp3 文件。另外,我修改了应用程序,所以第一个活动启动,它启动服务,然后调用“finish()”。

好的,所以...我启动应用程序,第一个活动启动,我的服务启动并播放音乐,活动结束,应用程序关闭,然后...音乐停止,几秒钟后服务重新启动(我使用的是 START_STICKY 标志,所以我想这很正常)。

我不希望在我关闭应用程序时停止音乐,或者换句话说,我不希望在我的应用程序关闭时停止服务(然后因为它已停止而重新启动)。

现在,为了控制音乐服务,我启动服务,然后绑定到它,这样我就可以调用我在接口中定义的服务函数。

有什么想法吗?

谢谢!

编辑:

这是我的应用程序和服务所做的示例(在我正在进行的测试中)。

活动:

public class FirstActivity extends SherlockFragmentActivity 
    @Override
    public void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);

        startService(new Intent(this, MyService.class));

        ...
        // Here is a postDelayed that will run after 2 seconds and call finish()
    

服务:

public class MyService extends Service 
    private MediaPlayer mPlayer;

    @Override
    public void onCreate() 
        mPlayer = new MusicPlayer(this);
    

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) 
        // Here is the code that plays the music using MediaPlayer

        return START_STICKY;
    

【问题讨论】:

与我一起编写应用程序的朋友并没有尝试相同的行为。对他来说,这非常有效。也许我的问题与 HTC Sense 有关? (我有一台 HTC One S)。 一个代码示例将帮助您确定您在做什么 【参考方案1】:

不要忘记在清单应用程序标签中注明服务是远程的:

<service
  android:name="somepackage.PlayerService"
  android:label="Player Service"
  android:process=":remote"/>

请注意,remote 名称可以是其他名称,因此您可以拥有多个不绑定到主应用程序进程的服务

【讨论】:

我会尽快尝试的。遗憾的是,由于我丢失了音乐服务代码(而且我没有新代码的副本),这需要我一些时间。谢谢! 如果你想要一个工作示例,我在我的模组播放器项目中成功使用了它github.com/josef-jelinek/tiny-mod-player/tree/master/… 像魅力一样工作!感谢您的解决方案:)

以上是关于活动停止/关闭时音乐服务停止?的主要内容,如果未能解决你的问题,请参考以下文章

关闭模态视图控制器会导致音乐停止

播放背景音乐,用户可以停止或重新启动或暂停音乐

在我的所有活动中播放背景音乐,并且仅在我的应用未显示时才停止

当用户按下主页按钮时停止 Android 服务

当应用程序进入后台时,MediaBrowserServiceCompat 停止播放音乐

Android MediaPlayer 背景音乐线程随机停止