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

时间:2012-05-06 14:14:36

标签: android android-service background-music

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

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

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

当我关闭应用程序时,我不希望音乐被停止,换句话说,当我的应用程序关闭时,我不希望停止服务(然后重启,因为它已被停止)。 / p>

现在,为了控制音乐服务,我启动服务,然后绑定到它,这样我就可以调用我在界面中定义的服务功能。

有什么想法吗?

谢谢!

修改

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

的活动:

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;
    }
}

1 个答案:

答案 0 :(得分:2)

不要忘记将服务远程放在清单应用程序标记中:

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

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