android.os.DeadObjectException异常

今天出现了android.os.DeadObjectException异常。

那么DeadObjectException什么意思呢,字面意思当前对象“死”了,也就是没有了呗!

出现这个问题其实大多源于当前程序异常崩溃,进程直接被杀死,但是as或者其他的软件未能捕获到bug 所以就爆出了这个DeadObjectException异常,所以出这个问题大多数是因为程序崩溃引起的

调用的对象不存在,因为它所在app进程不存在或进程崩溃,此时在底层回调时报错。

解决方案:

在调用对象之前,建议检查是否存在此进程。DeadObjectException 异常出现是因为app进程不存在或进程崩溃因此在底层回调时报错。进程不存在或者进程崩溃需要查看其他日志来定位。对于进程崩溃的情况,也有可能部分原因是由于操作系统考虑到内存、cpu、优先级等指标,选择杀死一个进程得到资源。这种情况下,可以使用MQC平台的深度性能测试产品来帮助分析内存泄漏等问题。



最近维护到一个应用程序的代码,在某个activity页面中,页面只要打开持续一段时间(区分手机设备,htc的部分时间能持续半个小时以上不挂,samsung的手机有的40秒不到就挂,有的手机甚至是10秒中就会挂)。


查看后台抛出的异常信息如下:


Java代码 

W/InputManagerService(163): Session failed to close due to remote exception  

W/InputManagerService(163): android.os.DeadObjectException  

W/InputManagerService(163):     at android.os.BinderProxy.transact(Native Method)  

W/InputManagerService(163):     at com.android.internal.view.IInputMethodSession$Stub$Proxy.finishSession(IInputMethodSession.java:346)  

W/InputManagerService(163):     at com.android.server.InputMethodManagerService.finishSession(InputMethodManagerService.java:944)  

W/InputManagerService(163):     at com.android.server.InputMethodManagerService.clearCurMethodLocked(InputMethodManagerService.java:955)  

W/InputManagerService(163):     at com.android.server.InputMethodManagerService.onServiceDisconnected(InputMethodManagerService.java:972)  

W/InputManagerService(163):     at android.app.LoadedApk$ServiceDispatcher.doDeath(LoadedApk.java:1069)  

W/InputManagerService(163):     at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1083)  

W/InputManagerService(163):     at android.os.Handler.handleCallback(Handler.java:587)  

W/InputManagerService(163):     at android.os.Handler.dispatchMessage(Handler.java:92)  

W/InputManagerService(163):     at android.os.Looper.loop(Looper.java:130)  

W/InputManagerService(163):     at com.android.server.ServerThread.run(SystemServer.java:559)  

异常并不是应用本身抛出来的,而且出错的activity在AndroidManifest.xml中有设置android:windowSoftInputMode="stateAlwaysHidden",也就是软键盘恒定是隐藏的,并不涉及input相关的内容。


问题原因无法定位,上网各种google,搜索出来的结果无外乎类似于下面两种的说明:

(1)When the remote process gets killed by the OS,then you get a DeadObjectException. 

Any process might get killed by the OS depending on system requirements.

(2)It seems like I've got a low memory issue in my App... 

       Can it be the reason why my IME process run away ? 


也就是说,网上并没有直接解决问题的方法,搜索的话根本不可能得到直接的答案。

无奈,只能将出错的activity的代码一行行的读,希望找到问题的原因所在:

最终发现activity中有用到opengl的东东,且有如下代码:


Java代码 

mGLSurfaceView.setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY);  

这一行代码怎么看也不会有问题,但是仔细查看以下相关文档的说明发现有:(http://gjhappyyy.iteye.com/blog/1298729)

OpenGl ES关于渲染方式有以下两种:


RENDERMODE_CONTINUOUSLY和RENDERMODE_WHEN_DIRTY。

默认渲染方式为RENDERMODE_CONTINUOUSLY,这两种渲染的含义是:

RENDERMODE_CONTINUOUSLY:渲染器会不停地渲染场景,

RENDERMODE_WHEN_DIRTY:只有在创建和调用requestRender()时才会刷新。

一般设置为RENDERMODE_WHEN_DIRTY方式,这样不会让CPU一直处于高速运转状态,提高手机电池使用时间和软件整体性能。



也就是说activity页面在开着的时候,即使不做任何操作,手机的CPU等资源也是处于高速运转的状态,意味着有可能会耗掉其他app所需要的资源,从而触发其他应用导致InputManagerService的异常信息。

尝试将属性修改为GLSurfaceView.RENDERMODE_WHEN_DIRTY,测试:发现问题解决。


总结:

对于InputManagerService抛出的android.os.DeadObjectException相关异常,应该仔细检查出现异常的场景是否有大量使用cpu或者消耗内存的代码,而非找现成的答案。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容