पर डेटा भेजें मैं एक संगीत प्लेयर बना रहा हूं जो प्लेबैक के लिए सेवा का उपयोग करता है। मेरे पास एक गतिविधि 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);
}
}
}
मेरे विधि है कि मैं अगले बटन को क्लिक पर बोल रहा हूँ:
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
मैं बाइंड सेवा और गतिविधि के लिए बाइंडर का उपयोग करता हूं। –