我正在构建一个使用服务进行播放的音乐播放器.我有一个Activity UI来控制(播放,暂停,下一步......)服务.我想在按下下一个或上一个按钮时从我的服务更新UI.我想过传递一个整数值.这是我的代码:
我用过信使进行交流.我服务中的代码如下所示:
enum Event {
NextSongChanged, CurrentPlayingSong
};
public synchronized void registerHandler(Messenger m) {
clients.add(m);
}
private void emit(Event e) {
for (Messenger m : clients) {
try {
m.send(Message.obtain(null, e.ordinal()));
} catch (RemoteException exception) {
/* The client must've died */
clients.remove(m);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我打电话的方法点击下一步按钮:
public synchronized void playnext() {
reset();
if(songIndex < (songsList.size() - 1)) {
songIndex += 1;
playSong(songIndex);
} else {
songIndex = 0;
playSong(songIndex);
}
emit(Event.NextSongChanged);
}
Run Code Online (Sandbox Code Playgroud)
一旦我触发NextSongChanged事件,我想将"songIndex"变量传递给我的活动.有关如何实现这一点的任何想法?
我的活动代码来处理事件:
private Messenger playerMessenger = …Run Code Online (Sandbox Code Playgroud)