我正在使用Service
s 开发音乐播放器应用程序。在服务中,我MediaPlayer
在一个新线程中处理所有功能。这是我的类,它实现Runnable
:
public class MusicPlayerThread implements Runnable {
boolean shouldPlayNext=false;
public void run {
while(true) {
if(shouldPlayNext) //shouldPlayNext always is false
//code to play next song
}
}
public void playNext() {
shouldPlayNext=true; //although control reaches here..
}
}
playNext()
是一种只能从 this 外部调用的方法Thread
。
所以我试着这样做:
public void run {
while(true) {
if(getshouldPlayNext) //code to play next song
}
}
synchronized public void playNext() {
shouldPlayNext=true;
}
synchronized public boolean getshouldPlayNext() {
return shouldPlayNext;
}
尽管如此,该run
方法总是被认为shouldPlayNext
是错误的。我什至尝试将变量声明为:
volatile boolean shouldPlayNext=false;
我错过了什么?谢谢。