【发布时间】: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)。
-
一个代码示例将帮助您确定您在做什么
标签: android android-service background-music