AIDL通信过程中设置死亡代理

2024-01-09

关于AIDL的使用参考学习:

https://blog.csdn.net/u011240877/article/details/72765136

https://blog.csdn.net/iromkoear/article/details/59706441

关于设置死亡代理:

在进行进程间通信的过程中,如果服务端进程由于某种原因异常终止,我们的远程调用就会失败,影响我们的功能,那么怎么样能够知道服务端进程是否终止了呢,一种方法就是给Binder设置死亡代理。

方法是在onServiceConnected()函数中,

mBookManager.asBinder().linkToDeath(mDeathRecipient,0);//mBookManager为服务端进行的Service对象,通过asBinder()可以获得Binder对象

另外定义死亡代理对象

private IBinder.DeathRecipient mDeathRecipient = new IBinder.DeathRecipient() {
     @Override
     public void binderDied() {
         if (mBookManager == null) return;
         mBookManager.asBinder().unlinkToDeath(mDeathRecipient,0);//解除死亡通知,如果Binder死亡了,不会在触发binderDied方法
         mBookManager = null;
     }
};

如果服务端进程死亡了,会回调到binderDied()函数

后面通过判断mBookManager是否为null即可知道服务端进程是否死亡

除设置死亡代理,Binder对象还有两个方法可以判断服务器进行是否存在或存活,返回均为boolean类型

mBookManager.asBinder().pingBinder();
mBookManager.asBinder().isBinderAlive();
     /**//检查Binder对象是否存在
     * Check to see if the object still exists.
     * 
     * @return Returns false if the
     * hosting process is gone, otherwise the result (always by default
     * true) returned by the pingBinder() implementation on the other
     * side.
     */
    public boolean pingBinder();

    /**//检查Binder所在的进程是否存活
     * Check to see if the process that the binder is in is still alive.
     *
     * @return false if the process is not alive.  Note that if it returns
     * true, the process may have died while the call is returning.
     */
    public boolean isBinderAlive();

转自: https://www.cnblogs.com/genggeng/p/9810322.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AIDL通信过程中设置死亡代理 的相关文章

  • 检查从 arrayadapter 获取的复选框

    我有标题清单 CheckBox 我想控制默认检查哪一个 所以我试图获得正确的视图并检查它 但由于某种原因它不起作用 知道为什么吗 form checkbox item xml
  • 如果在 addHeader 之前写入正文,HttpServletResponse 会丢失标头吗?

    环境 Java HotSpot TM 64 位服务器 VM 内部版本 16 3 b01 混合模式 tomcat6 当我使用HttpServlet发送html页面时 如下所示 resp getWriter append body body i
  • 使用 JavaScript 与 Web 服务器通信的 Applet 是否可以迁移到 JWS?

    只是分享一些信息 希望对社区有用 由于各种浏览器停止支持插件 Applet 的可用性已经下降 Google 已决定停止对 NPAPI 插件的支持 EDGE 不支持插件 Firefox 也不鼓励使用插件 Mozilla 可能会跟进该套件 我们
  • Java:while循环冻结程序

    我正在制作一个游戏 我需要每 3 秒更新一次 JProgressBar 为此 我使用 while 循环 问题是我的程序由于 while 循环而冻结 我在其他问题中读到它 他们没有帮助我解决这个问题 我不知道如何解决 这是我的代码 publi
  • 查找所有数组的长度多维数组,Java

    我想使用多维数组来存储数据网格 但是 我还没有找到一种简单的方法来查找长度2nd数组的一部分 例如 boolean array new boolean 3 5 System out println array length 只会输出3 是否
  • Glassfish 4 - JDBC 领域

    Glassfish 4 中的密码加密算法和摘要算法有什么区别 因为Password加密算法不能为空 所以我使用了MD5 Encoding使用了Hex 摘要算法为空 因此默认为 SHA 256 但是 如果我使用 JAAS 制作一个简单的登录应
  • AMQP Spring 集成错误处理

    我的集成流程如下所示 Bean public IntegrationFlow auditFlow Qualifier eventLoggingConnectionFactory ConnectionFactory connectionFac
  • Java 表达式树 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有相当于 net的 LINQ 下的表达式树JVM 我想实现一些类似 LINQ 的代码结构Scala
  • 如何在 QueryDSL 中选择文字

    我目前正在开发一个使用 queryDSL 和 hibernate 的项目 其中它需要一个选择文字 按照发布的示例here https stackoverflow com questions 18691317 querydsl how to
  • 用于 Eclipse 的 Resharper [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 将 Maven 控制台与 m2eclipse 一起使用

    Maven 新手在这里 有没有办法在 Eclipse 中打开控制台并在 M2Eclipse 插件上执行 Maven 命令 这是一个非常好的插件 但我环顾四周 没有找到我想要的一些功能 谢谢 如果你想运行特定的maven插件 你可以这样做 g
  • IntelliJ - 无效源版本:17

    我已经在 IntelliJ 中使用 Gradle 创建了一个使用 Java 17 的新 Java 项目 运行我的应用程序时出现错误Cause error invalid source release 17 我的设置 我已经安装了openjd
  • 短 2 个字节

    我正在从串行端口读取一个长度为 133 字节的数据包 最后 2 个字节包含 CRC 值 我使用 Java 将 2 个字节值制成单个 我认为很短 这就是我所做的 short high 48 0x00ff short low 80 short
  • Eclipse 如何创建一个未解决编译问题的类?

    当我尝试使用 javac 编译此类时 出现编译错误并且未创建 Test class public class Test public static void main String args int x 1L lt this cannot
  • java mysql 准备好的语句

    我正在尝试使用 java 向数据库中进行简单的插入 它告诉我我的 sql 语法已关闭 但是 当我复制打印出来的字符串并将其放入 phpmyadmin 中的 sql 命令中时 它会正确执行该命令 并且我似乎无法弄清楚 java 中的字符串查询
  • Android - 从渲染线程内结束活动

    下午好 我不熟悉 android 中的活动生命周期 并且一直在尽可能地阅读 但我不知道如何以良好的方式解决以下问题 我有一个使用 GLSurfaceView 的活动来在屏幕上绘制各种内容 在这个 GLSurfaceView 的渲染线程中 我
  • 空检查时可能未初始化错误

    我正在检查变量是否已初始化 但此时 netbeans 给了我variable reader might not have been initialized警告 我该如何解决 抑制这个问题 这是我的代码 摘要 final Reader rea
  • 在 servlet 会话和 java.io.NotSerializedException 中保存对象

    SEVERE IOException while loading persisted sessions java io WriteAbortedException writing aborted java io NotSerializabl
  • java中什么是静态接口?

    我正在阅读Map Entry界面 当我注意到它是一个static界面 我不太明白什么是静态接口 它与常规接口有什么不同 public static interface Map Entry
  • 将 SQL 数据中的一行映射到 Java 对象

    我有一个 Java 类 其实例字段 以及匹配的 setter 方法 与 SQL 数据库表的列名相匹配 我想优雅地从表中获取一行 到 ResultSet 中 并将其映射到此类的实例 例如 我有一个 Student 类 其中包含实例字段 FNA

随机推荐

  • 多进程之Binder的意外死亡及权限校验

    Android多进程系列 Android 多进程通讯之几个基本问题 Android多进程之Binder的使用 Android多进程之手动编写Binder类 Android多进程之Binder解绑监听的问题 Android 多进程之Messe
  • 毕设开题分享 单片机智能教室系统(智能照明+人数统计)

    1 简介 Hi 大家好 今天向大家介绍一个学长做的单片机项目 单片机智能教室系统 智能照明 人数统计 大家可用于 课程设计 或 毕业设计 项目分享 https gitee com feifei1122 simulation project
  • Ubuntu下git提示:终止提交因为提交说明为空。

    这么简单的问题居然搜索了一会儿 现在的网络环境越来越差了 解决方法 gedit git config global core editor gedit s the paramater s means set the gedit mode t
  • 使用匿名binder实现client向server端的死亡通知

    一 引言 因为binder是跨进程通信 难免会遇到服务端出现异常挂死的情况 这个时候需要通知到客户端进行相应的处理 在网络通信中是非常常见的机制 当然 在binder中 Android也为我们写好了相关的框架 但通过binder源码分析 你
  • IBinder 解析

    远程对象的基础接口 是一个为了在执行进程中和进程间调用时的高性能 而设计的轻量级 远程调用 机制的核心部分 这个接口描述了和远程对象交互的抽象协议 不要直接实现这个接口 而是通过继承 Binder 来实现 IBinder的关键 API 是与
  • 如何避免过度努力带来的负面影响

    在快节奏的现代职场中 我们经常听到关于 努力 的话题 有些人认为 只有通过不断地努力和投入 才能够获得成功 然而 如果过度用力 可能会带来一些负面影响 本文将探讨职场中过度用力的负面影响以及如何避免这些问题 首先 让我们来看一下过度用力的负
  • Mockito3.x详解

    目录 Mockito 1 简单示例 2 打桩测试 3 参数匹配器 4 调用次数验证 5 通过打桩为无返回值函数抛出异常 6 验证调用顺序 7 验证从未发生过的交互
  • 手写转文字扫描软件有哪些?方便又好用的工具谁不喜欢?

    大家有没有仔细数过 你们在从小到大的学习生涯中使用了多少笔记本 反正我是经常被我妈催着把以前的笔记本丢掉 但是它们承载的可都是我学生时代的记忆 就连当时觉得复杂难懂的内容 其实也挺有意思的 所以 我一直在思考 到底有什么方法可以让我在不占用
  • Binder机制知识点

    引言 在Android领域 Binder作为进程间通信的核心机制 是每位Android技术人员都应该深入了解的重要知识点 本文将从面试官的角度出发 围绕Android Binder展开一系列高级疑难问题 通过问题分析与问题简答 旨在帮助大家
  • 静态关键字:static

    static的作用 static是静态的意思 可以修饰成员变量和成员方法 static修饰成员变量表示该成员变量只在内存中只存储一份 可以被共享访问 修改 成员变量 分为2类 静态成员变量 有static修饰 属于类 内存中加载一次 常表示
  • 性能分析与调优: Linux 内存观测工具

    目录 一 实验 1 环境 2 vmstat 3 PSI 4 swapon 5 sar 6 slabtop 7 numstat 8 ps 9 top 10 pmap 11 perf 12 bpftrace 二 问题 1 接口读写报错 2 sl
  • 校招失败后,在小公司熬了 2 年终于进了字节跳动,竭尽全力....

    其实两年前校招的时候就往字节投了一次简历 结果很明显凉了 随后这个理想就被暂时放下了 但是这个种子一直埋在心里这两年除了工作以外 也会坚持写博客 也因此结识了很多优秀的小伙伴 从他们身上学到了特别多东西 把这次面试分享出来 也是希望可以帮助
  • Android studio Progress Bar 进度条应用设计

    一 水平进度条 1 xml布局文件 2 java文件 progressBar1 findViewById R id progressBar progressBar2 findViewById R id progressBar2 public
  • Android App备案获取公钥、签名MD5值

    1 生成签名文件 keytool genkey alias 别名XXX keypass 密码XXX keyalg RSA keysize 2048 validity 36500 keystore D XXX keystore storepa
  • jquery的contains如何实现精准匹配

    HTML结构
  • Android studio SeekBar应用设计

    一 xml布局文件 1 默认状态的
  • AIDL通信过程中设置死亡代理

    概述 在进行进程间通信的过程中 如何服务端进程由于某种原因异常终止 我们的远程调用就会失败 影响我们的功能 那么怎么样能够知道服务端进程是否终止了呢 那就是给Binder设置死亡代理 下面看看如何设置 Override public voi
  • 小学二三年级入门信奥赛,如何从Scratch进入C++的学习

    小学生几年级适宜开始学习C 这是讨论的比较热烈 也是比较热门的话题 小学生适宜几年级开始学C 小学生适宜几年级开始学C CSDN博客 simple happiness 信息学规划 北京二年级学生图形化过二级想往信奥靠拢如何准备 信息学规划
  • Prometheus Blackbox_exporter笔记

    一 安装Promtheus 在 Prometheus 官网 Download Prometheus 获取适用于 Linux 的 Prometheus 安 装包 这里我选择最新的 2 46 0 版本 我是 Linux 系统 选择下载 prom
  • AIDL通信过程中设置死亡代理

    关于AIDL的使用参考学习 https blog csdn net u011240877 article details 72765136 https blog csdn net iromkoear article details 5970