我正在编写一个播放音频文件的应用程序,我希望它在最小化的同时继续这样做。我已经这样做了,但我希望音频播放在单独的线程上,因为根据 Android 开发者网站,CPU 密集型服务在单独的线程上工作得更好。
首先,我尝试使用 IntentService(这是完美的解决方案)。然而,由于一些愚蠢的原因,一旦代码执行,服务就会自行销毁——即在它开始播放文件之后。我无法阻止这一点。
然后我创建了一个运行服务的线程。但是,我不知道如何让线程在需要时停止服务——我能做的最好的事情是:
serviceThread = new Thread() {
public void run() {
while (true) {
if (playAudio) {
startService(new Intent(getApplicationContext(),
MusicService.class));
playAudio = false;
}
if (stopAudio) {
stopService(new Intent(getApplicationContext(),
MusicService.class));
stopAudio = false;
}
}
}
};
显然,之后我将 startService 设置为 true 以启动服务,并将 stopService 设置为 true 以停止它。但是,我认为线程必须一直在做检查,因此一直在做很多无用的工作。我什至不确定为什么该应用程序正常工作,它不是每秒进行数百万次检查吗?
我怎样才能正确地做到这一点?