Messenger 绑定 IntentService

1.Activity中绑定IntentService

Intent intent =new Intent(this, MIntentService.class);

 bindService(intent, MainActivity.this, Context.BIND_AUTO_CREATE);


2.ServiceConnection 的 onServiceConnected 回调中使用服务端返回的 IBinder 构建 Messenger,并将Activity中维护的Messenger封装到Message中,通过binder传给服务端

@Override

public void onServiceConnected(ComponentName name, IBinder binder) {

System.out.println("onServiceConnected!");

    Message message = Message.obtain();

    message.replyTo =messenger;

    try {

new Messenger(binder).send(message);

    }catch (RemoteException e) {

// TODO Auto-generated catch block

        e.printStackTrace();

    }

}

3.服务端维护一个Messenger,并在 onBind 中返回messenger.getBinder(),服务端可以通过Handler接收来自客户端的消息

@Override

public IBinder onBind(Intent intent) {

return messenger.getBinder();

}

private class IncomingHandlerextends Handler {

@Override

    public void handleMessage(Message message) {

if (message.replyTo !=null) {

outMessenger = message.replyTo;

            Log.d("MIntentService", "handleMessage outMessenger = " +outMessenger);

        }

}

}

private Messengermessenger =new Messenger(new IncomingHandler());

4.onHandleIntent处理事件时服务端通过Handler接收消息中 message.replyTo 得到的Messenger发出事件

@Override

protected void onHandleIntent(Intent arg0) {

System.out.println("Service started");

    outMessenger.send(Message.obtain());

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容