在未知线程中正确使用Messenger

时间:2019-03-12 15:59:54

标签: android service android-looper

背景

我有一个Android.app.Service S和一个类A,它们完全禁止使用android.os.MessengerS进行双向通信。

这时,我停留在如何初始化将处理该服务答案的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)会自动使用它。

因此,下面的问题仍然存在。 如何为处理程序获取有效的循环程序?

0 个答案:

没有答案