//比如在MusicPlayService中创建线程:
private Thread thread;
public void onCreate() {
thread = new Thread() {
public void run() {
while (isLoop) {
if (needUpdate && player.isPlaying()) {
// 发送更新进度条广播.让滚动条动起来.在这里发广播是因为播放引起的滚动条移动就是在这里发生的.
Intent intent = new Intent(
GlobalUtils.ACTION_UPDATE_PROGRESS);
intent.putExtra(GlobalUtils.EXTRA_PROGRESS, player
.getCurrentPosition());
intent.putExtra(GlobalUtils.EXTRA_DURATION, player
.getDuration());
intent.putExtra(GlobalUtils.EXTRA_MUSIC_NAME, app
.getMusics().get(app.getCurrentIndex())
.getName());
sendBroadcast(intent);
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
} else {
synchronized (this) {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
};
thread.start();
}
public void play() {
// 唤醒线程
synchronized (thread) {
thread.notify();
}
}
public void onDestroy() {
// 唤醒线程
synchronized (thread) {
thread.notify();
}
}
public void seekTo(int position) {
// 唤醒线程
synchronized (thread) {
thread.notify();
}
}
private class InnerReceiver extends BroadcastReceiver {
// 唤醒线程
synchronized (thread) {
thread.notify();
}
}