安卓service使用(二)

前文回顾:service基本使用(一)
本次文章介绍,主要是远程service的使用,先附上代码链接:代码下载
代码结构图:
代码结构
如图。aidl文件夹定义了一个RemoteListener.aidl,一个RemoteIPCBinder.aidl。前者用于作为服务绑定的binder,后者作为监听对象。

注意事项:

(1)对于startService()和stopService()的使用,注意由于实际使用项目的不同,去决定采取隐式or显式的调用。
(2)对于bindService(),注意断开连接时的重连。注意连接成功时的binder对象初始化。核心代码如下:

        findViewById<Button>(R.id.bind_service).setOnClickListener {
            mConnection = object : ServiceConnection {
                override fun onServiceConnected(p0: ComponentName?, p1: IBinder?) {
                    try{
                        mBinder = RemoteIPCBinder.Stub.asInterface(p1)
                        mBinder?.connect("client 1 connect")
                        mBinder?.setOnListener(mListener)
                    }catch (e:Exception){
                        KtLogUtil.d("onServiceConnected error:${e.message}")
                    }
                }

                override fun onServiceDisconnected(p0: ComponentName?) {
                    mBinder?.removeListener(mListener)
                }
            }
            //绑定service
            val serviceIntent = Intent(this, RemoteService::class.java)
            bindService(serviceIntent, mConnection!!, BIND_AUTO_CREATE)
        }

(3)注意aidl中,in,out,input三者的区别以及用法
that’s all------------------------------------------------------------------------------------------------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值