设为首页 加入收藏

TOP

Android中binderDied()以及“Unknown binder error code” 出现的原因说明
2014-11-24 14:14:40 来源: 作者: 【 】 浏览:0
Tags:Android binderDied 以及 Unknown binder error code 出现 原因 说明

Android核心的必备。网上关于它的介绍很多,希望大家能耐着性子认真地学习Binder机制的实现。在此,给大家分享一个


写点关于Binder机制的,但无奈自己的理解程度还很肤浅,只好放弃了。


自己从事的模块开发采用了Binder机制进行功能的开发,对Binder机制的不熟悉,导致了很多Bug的出现,可谓“一Bug


未解,一Bug又起”,伤脑筋。今天对Binder运用过程中可能出现的两个问题做下总结,希望帮大家有所启发。


为了下面叙述的清楚,假设我们存在如下的Binder交互对象:


1 、 binderDied()方法的触发时机


当客户端对象A死掉时或者其他情况导致该Binder发生结束了,就会回调binderDied()方法,用户可以在这个方法里


进行捕捉binder死掉。


其方法原型在:IBinder.h文件中 (frameworks/base/include/binder/Ibinder.h)


通常而言,我们可以在服务端BnXXX 里实现该虚函数去捕获Binder死掉事件,例如:


2、 Unknown binder error code 0xfffffff7 出现的原因。


当客户端与服务端正在通过Binder机制交互时,例如A正在通过Binder机制与B对象进行交互,即A请求B do something,


这个过程中如果Binder机制发生了异常,导致A与B的交互不能正常进行,例如代码中显示调用System.exit(0)结束应用程序


(说明:System.exit(0)方法会 清空该Process的一切资源,包括Activity、Service、BroadcastReceiver等资源,Binder交互


也结束),系统就打印如下Log信息:“Error: JavaBinder Unknown binder error code. 0xfffffff7”。接下来,C++层会调用


binderDied() 方法,其Binder客户端也死掉了。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇第一个Android应用程序---Android.. 下一篇Android系统的Binder机制

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: