首页
JAVA笔记
数据库笔记
混乱记忆
小站记
您现在的位置
android 如何将 message 发送到 service 的 Handler 中
简介: android Handler Messenger 配合使用,将 message 发送到 service 的 Handler 中

之前在看 android service 时一直忽略了一个细节,那就是Messenger。

在 Service 与 app 通信时,app 一般需要实现 ServiceConnection 中的 onServiceConnected 和 onServiceDisconnected 函数。而 onServiceConnected 的回调参数中哦存在一个IBinder service。

Service 被连接时会调用

 public IBinder onBind(Intent intent) {
        return mBinder;
    }

 

service 连接成功后会调用  ServiceConnection  中的 onServiceConnected 函数。

 

app 连接 service 示例:

bindService(new Intent(Binding.this,
                    MessengerService.class), mConnection, Context.BIND_AUTO_CREATE);

//代码取自 apiDemo 中的 com.example.android.apis.app.MessengerServiceActivities 实现,详细过程可直接参考该类的实现。

 

如何将 message 发送到 service 的 Handler 中

创建 Messenger 得到实例,然后调用实例的getBinder 函数,当客户端 onServiceConnected  被调用时 通过通过 new Messenger(service) 创建实例,发送消息时通过调用 实例的 send 方法即可。