私は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;
}
それでも、メソッドは常にfalse にrun
見えます。shouldPlayNext
変数を次のように宣言してみました:
volatile boolean shouldPlayNext=false;
私は何が欠けていますか?ありがとう。