我正在構建使用服務進行播放的音樂播放器。我有一個活動用戶界面,可以控制(播放,暫停,接下來,...)服務。 我想在按下下一個或上一個按鈕時從我的服務更新UI。我想傳遞一個整數值。這裏是我的代碼:從服務發送數據到活動Android
我已經使用信使進行溝通。在我服務的代碼如下所示:
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);
}
}
}
我的方法,我的下一個按鈕的點擊呼叫:
public synchronized void playnext() {
reset();
if(songIndex < (songsList.size() - 1)) {
songIndex += 1;
playSong(songIndex);
} else {
songIndex = 0;
playSong(songIndex);
}
emit(Event.NextSongChanged);
}
只要我火了NextSongChanged事件我想通過「songIndex」變成我的活動。任何想法如何實現這一目標?
我的動態代碼來處理事件:
private Messenger playerMessenger = new Messenger(new Handler() {
@Override
public void handleMessage(Message msg) {
switch (MyService.Event.values()[msg.what]) {
case NextSongChanged:
//String songTitle = songsList.get(currentSongIndex+1).get("songTitle");
//currentSongIndex += 1;
//songTitleLabel.setText(songTitle);
//updatePlaying();
break;
case CurrentPlayingSong:
break;
}
}
});
http://stackoverflow.com/questions/10664114/send-data-from-service-to-activity-and-screen-rotation – AbdulHannan
我使用活頁夾來綁定服務和活動。 –