HIDL服务死亡通知实例 hidl_death_recipient

//申请hidl_death_recipient的子类

struct CameraPolicyServiceClient: 
        virtual public hardware::hidl_death_recipient
    {
        CameraPolicyServiceClient(sp<hardware::camera::device::V1_0::ICameraDevice> &interface);
        ~CameraPolicyServiceClient();
        status_t initialize();
        // hidl_death_recipient interface - this locks the parent mInterfaceMutex
        virtual void serviceDied(uint64_t cookie, const wp<hidl::base::V1_0::IBase>& who) override;
        const sp<hardware::camera::device::V1_0::ICameraDevice>  mInterface;
    }

//重写它的 serviceDied() 方法。

//实例化一个 hidl_death_recipient 子类对象。

CameraHardwareInterface::CameraPolicyServiceClient::CameraPolicyServiceClient(
    sp<hardware::camera::device::V1_0::ICameraDevice> &interface) :
        mInterface(interface){

}
void CameraHardwareInterface::CameraPolicyServiceClient::serviceDied(uint64_t cookie,
        const wp<hidl::base::V1_0::IBase>& who) {
    (void) who;
   //... do something,cookie可以自定义,只要和linkToDeath保持一致就行
    ALOGW("%s: Unexpected serviceDied cookie %" PRIu64 "" ,__FUNCTION__, cookie);
}
status_t CameraHardwareInterface::CameraPolicyServiceClient::initialize() {
  //调用服务的方法 linkToDeath() 给监视器,传入 IDeathRecipient 的接口对象。
    hardware::Return<bool> linked = mInterface->linkToDeath(this,0);
    ALOGE(" CameraPolicyServiceClient::initialize");
    if (!linked.isOk()) {   
        ALOGE("%s: Transaction error in linking to ",__FUNCTION__);
    } else if (!linked) {
        ALOGE("%s: Unable to linkToDeath",__FUNCTION__);
    }
    return OK;
}
CameraHardwareInterface::CameraPolicyServiceClient::~CameraPolicyServiceClient(){
}

google 的介绍: https://source.android.google.cn/devices/architecture/hidl/services

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值