binder linkToDeath的用法
IBinder 的linkToDeath函数就是说当这个远程binder死亡之后,客户端这里可以收到回调。
以下是一个演示。
#include <utils/Trace.h>
#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
#include <semaphore.h>
#include <iostream>
#include <stdint.h>
#include <sys/types.h>
#include <set>
#include <thread>
#include <unordered_map>
#include <unordered_set>
#include <vector>
#include <inttypes.h>#include <cutils/properties.h>
#include <utils/Log.h>
#include <utils/SystemClock.h>
#include <android-base/properties.h>
#include <errno.h>
#include <fcntl.h>
#include <fstream>
#include <poll.h>
#include <pthread.h>#include <binder/IPCThreadState.h>
#include <binder/ProcessState.h>
#include <binder/Binder.h>
#include <binder/IBinder.h>
#include <binder/IPCThreadState.h>
#include <binder/IServiceManager.h>
#include <binder/IServiceManager.h>
#include <sys/wait.h>#include <private/binder/binder_module.h>
#include <sys/epoll.h>
#include <sys/prctl.h>using namespace android;
using namespace std;static String16 binderLibTestServiceName = String16("test.binderLib.0921");class TestDeathRecipient: public IBinder::DeathRecipient {private:virtual void binderDied(const wp<IBinder> &who) {printf("binderDied\n");}
};int main(int argc, char **argv) {sp < IBinder > m_server;ProcessState::self()->startThreadPool();status_t ret;sp <IServiceManager> sm = defaultServiceManager();m_server = sm->getService(binderLibTestServiceName);sp<TestDeathRecipient> testDeathRecipient = new TestDeathRecipient();ret = m_server->linkToDeath(testDeathRecipient);printf("end\n");IPCThreadState::self()->joinThreadPool();return 0;
}
此处只贴出了客户端程序,测试流程为先运行服务端程序,注册服务,然后运行客户端程序,然后关闭服务端程序,这个时候客户端的binderDied就会被回调。
binder linkToDeath的用法相关推荐
- Android开发艺术探索--第二章IPC机制(2)之Binder
最近在拜读任主席的Android开发艺术探索,现在看了一半,再回头看前面的,感觉跟没有看一样,所以还是把知识点总结一下吧,这一节咱们来讲一下IPC中的Binder 直观来说,Binder是Androi ...
- 不得不说的Android Binder机制与AIDL
说起Android的进程间通信,想必大家都会不约而同的想起Android中的Binder机制.而提起Binder,想必也有不少同学会想起初学Android时被Binder和AIDL支配的恐惧感.但是作 ...
- android ipc 多个客户端,Android IPC之AIDL进阶篇
前言 在Android IPC之AIDL中我介绍了如何使用AIDL进行多进程通信,不过由于当时个人水平有限,仅仅介绍了最基础的部分,所以本篇博客主要是在Android IPC之AIDL的基础上深入介绍 ...
- Android-0.IPC相关简介
文章目录 1.Android中的多进程模式 1.1.多进程模式示例 1.2.多进程模式的运行机制 2.IPC基础概念 2.1.Serializable接口 2.2.Parcelable接口 2.3 B ...
- IPC机制 基础知识
在前面的博客中我已经写过了怎么在AndroidStudio中进行IPC开发设置 IPC是Intent-Process Communication 的缩写,含义为进程间通讯后者夸进程通讯是指两个进程之间 ...
- 《android开发艺术探索》读书笔记(二)--IPC机制
接上篇<android开发艺术探索>读书笔记(一) No1: 在android中使用多进程只有一种方法,那就是给四大组件在AndroidMenifest中指定android:process ...
- Android 进程间通信
要讲 Android 进程通信的话,就不得不先讲讲 Service. Service 是 Android 的四大组件之一,它主要的作用是后台执行操作,Activity 属于带有 UI 界面跟用户进行交 ...
- android sensor源码,阅读android有关sensor的源码总结 - JerryMo06的专栏 - CSDN博客
虽然这篇文章写得很差,因为赶时间,所以就匆匆忙忙地写出来自己作一个笔记.但是我想对大家应该有一点帮助. 1.有关sensor在Java应用程序的编程(以注册多个传感器为例,这程序是我临时弄出来的,可能 ...
- [Android]进程通信Andromeda框架
作者:苍王 时间:2018.6.1 以下是我这个系列的相关文章,有兴趣可以参考一下,可以给个喜欢或者关注我的文章. [Android]如何做一个崩溃率少于千分之三噶应用app--章节列表 组件化群1已 ...
最新文章
- LIVE555再学习 -- FFmpeg + live555实现RTSP直播
- Python Day8
- solr文档索引最佳实践
- 一文介绍备机重建各种方法的实现机制
- OPPO Find X5系列上架预约:全球首款天玑9000旗舰
- 小程序 后台返回的对象数组(每个数组添加一个新的属性值)
- Scrapy分布式、去重增量爬虫的开发与设计
- php foreach 不等于_PHP性能优化小技巧
- 菜菜PyTorch深度学习框架最全笔记(第二次课)
- python可以用于工业机器人编程_给工业机器人编程,最有效的办法是什么?
- JS制作一个简单的网页倒计时器
- html鼠标经过自动下拉菜单,用纯CSS实现鼠标经过后出现下拉菜单,实例讲解(附代码)...
- 接口测试 如何编写接口测试用例
- Bundle Adjustment简述
- 运行HQL时,报错:Container killed by YARN for exceeding memory limits
- 添加metadata到tflite模型
- 如何使用Hyper-V Manager和Powershell合并Hyper-V检查点
- 用python做头像_教你用python下载和拼接微信好友头像图片
- ic卡信息保存在服务器,智能IC卡网络数据安全保密系统
- java 亚马逊 mws_使用Amazon Deep Java库进行Java中的机器学习
热门文章
- 虎牙直播数据采集,为数据分析做储备,Python爬虫120例之第24例
- [小样本医学图像]‘Squeeze Excite’ Guided Few-Shot Segmentation of Volumetric Images
- 软件测试二八原则(软测之魂读后感)
- Android和wp7,Android 4.0与WP7孰强孰弱?
- HttpClient远程接口调用-实名认证
- Vue3电商项目实战-商品详情模块6【17-商品详情-标签页组件、18-商品详情-热榜组件、19-商品详情-详情组件、20-商品详情-注意事项组件】
- PCIE总线驱动学习笔记1
- 区块链技术入门 | 区块链开发技术栈
- 无人驾驶系统ISO 26262和ISO 21448开发流程的融合
- 容器集群技术-Kubernetes简介