Вам нужно сделать класс получателя получателя расширенным с
ResultReceiver
затем реализует интерфейс получателя результатов в вашей деятельности
Передача пользовательского объекта resultreceiver в intentService и в
intentservice просто выбирает объект-получатель и вызывает
Функция receive.send () для отправки чего-либо в вызывающую активность в
Связать объект.
вот класс customResultReceiver:
public class MyResultReceiver extends ResultReceiver {
private Receiver mReceiver;
public MyResultReceiver(Handler handler) {
super(handler);
// TODO Auto-generated constructor stub
}
public interface Receiver {
public void onReceiveResult(int resultCode, Bundle resultData);
}
public void setReceiver(Receiver receiver) {
mReceiver = receiver;
}
@Override
protected void onReceiveResult(int resultCode, Bundle resultData) {
if (mReceiver != null) {
mReceiver.onReceiveResult(resultCode, resultData);
}
}
}
реализует интерфейс Myresultreceiver.receiver в вашей деятельности, создайте переменную класса
Public MyResultReceiver mReceiver;
инициализировать эту переменную в onCreate:
mReceiver = new MyResultReceiver(new Handler());
mReceiver.setReceiver(this);
Передайте этот mReceiver службе intentService через:
intent.putExtra("receiverTag", mReceiver);
и получить в IntentService, например:
ResultReceiver rec = intent.getParcelableExtra("receiverTag");
и отправьте что-нибудь в действие, используя rec как:
Bundle b=new Bundle();
rec.send(0, b);
это будет получено в onReceiveResult действия. Вы можете просмотреть полный код по адресу: IntentService: возвращение данных в действие
Редактировать: Вы должны вызывать setReceiver (this) в onResume и setReceiver (null) в onPause (), чтобы избежать утечек.