Фон
У меня есть Android.app.Service S
и класс A
, который исключает использование android.os.Messenger
для двунаправленной связи с S
.
На данный момент я застрял в том, как инициализировать Messenger, который будет обрабатывать ответы от службы.
Рассмотрим следующую схему:
public class A implements Handler.Callback {
private Messenger messengerOut; //initialized via S's IBinder
private Messenger messengerIn; //How to init?
void doSomething() {
Message message = acquireMessage();
message.replyTo = this.messengerIn;
this.messengerOut.send(message);
}
private Message acquireMessage(){
//...
}
@Override
public void handleMessage(Message msg){
//...
}
}
Задача
Простой ответ будет таким: messengerIn = new Messenger(new Handler(this));
Но A
является вспомогательным классом и не налагает никаких последствий на потоки, в которых он работает. Таким образом, неизвестно, есть ли у него работающий Looper, который будет автоматически использоваться new Handler(Handler.Callback)
.
Таким образом, остается следующий вопрос. Как получить действительный петлитель для обработчика?