- 浏览: 130281 次
- 性别:
- 来自: 杭州
-
文章分类
最新评论
-
mzba520:
这样会导致拖动列表的时候,只要有链接长按事件会被触发。
Android TextView中增加超链接的匹配后,导致非超链接区域点击失效的问题解决方案 -
cfyme:
请问一下,我成功发送了一个会议邀请,怎么取消会议邀请,怎么更改 ...
通过ical4j与javamail实现会议邀请总结 -
xyy_zero:
有没有个demo?
Android中的网络时间同步
最近维护到一个应用程序的代码,在某个activity页面中,页面只要打开持续一段时间(区分手机设备,htc的部分时间能持续半个小时以上不挂,samsung的手机有的40秒不到就挂,有的手机甚至是10秒中就会挂)。
查看后台抛出的异常信息如下:
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的东东,且有如下代码:
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或者消耗内存的代码,而非找现成的答案。
发表评论
-
删除git submodule最为精准的一片描述文章
2015-02-11 00:19 1181转自 http://davidwalsh.name/git ... -
Android Manifest文件中meta-data的配置读取
2014-12-01 11:54 2720Manifest文件中配置meta-data的读取,例如如下 ... -
浏览器中打开指定的链接
2014-09-05 18:21 902浏览器中打开指定的链接 try { ... -
Android Studio打开工程出现Android SDK识别不了的问题
2014-08-19 19:51 6593问题现象: 使用Android Studio打开(imp ... -
dumpsys info
2014-04-24 15:42 787dumpsys 命令行的使用收录 1.查看ui绘制相关的 ... -
jar包编译所用的jdk版本不一致导致的问题
2014-04-01 13:10 2748所维护的app中使用到一个外部工程但是是自己维护的sdk,这 ... -
SQLiteDatabase执行计划的查看
2014-03-27 14:08 2063Android中内置的SQLite是可以通过命令行工具来查看 ... -
Android性能调优出发点
2014-03-13 17:06 574http://www.trinea.cn/android ... -
SQLiteDatabase使用问题总结
2014-03-10 17:40 2669SQLiteDatabase使用过程中经常碰到的问题 1. ... -
问题分析:java.lang.IllegalStateException: getDatabase called recursively
2014-03-05 15:33 3021问题场景: 在app首次启动使用到db的时候,后台提示如下 ... -
网络加载到的图片适配不同分辨率的手机屏幕
2013-12-18 19:38 2208对于从网络上加载到的图片信息,在解析的时候一般会解析成图片 ... -
Error inflating class问题解决思路
2013-09-25 17:13 5998修改问题的过程中,碰到如crash log中的日志信息(l ... -
Android应用性能测试(CPU和内存的性能)
2013-09-10 11:26 2590按照以下步骤进行性能测试的前置条件 1.测试手机具备ro ... -
ListView的adapter中的getView函数多次重复调用,导致数据显示重复的问题分析
2013-08-27 23:11 4928使用ListView显示数据, ... -
使用startActivityForResult启动新的Activity时,onActivityResult立马被执行的问题说明
2013-07-18 13:44 1958问题现象描述: Activity P1通过startAc ... -
使用硬件加速的注意事项
2013-07-02 11:17 2110为提高app的整体性能,在manifest文件中配置的时候, ... -
mac下调试android时设备无法识别的问题解决方案
2013-06-27 11:44 1601问题现象: 1.mac的os ... -
mac 环境变量
2013-06-26 10:33 677~/.bash_profile export ... -
GridView在复用View的时候导致部分数据显示重复的问题
2013-06-04 17:14 2216android.widget.GridView中setAda ... -
android 图片放大的处理
2013-05-29 15:37 1132场景:从网络上下载下来的小图片,直接使用设置某些区域的大小的 ...
相关推荐
- **InputManagerService的创建**:随后创建`InputManagerService`实例,其中传入了用于处理按键消息的`Handler`。 这部分代码大致如下: ```java // SystemServer.java wmHandlerThread = new HandlerThread(...
本文将深入探讨Android事件传递的机制,从InputManagerService开始,直至事件如何在View和Activity之间流转。 首先,事件的源头是硬件设备,如触摸屏或物理按键。在Android Framework层,InputManagerService扮演着...
放大手势涉及到的系统服务包括ContentService、InputManagerService以及AccessibilityManagerService。这三个服务作为Java层的系统服务,在设备启动时由SystemServer初始化并启动。ContentService是第一个启动的服务...
总的来说,Android Input子系统的事件分发流程涉及了从硬件驱动到应用程序的多个层级,包括InputDispatcher、InputManagerService、InputChannel、ViewRootImpl以及View层次结构。理解这一流程对于优化用户交互和...
在 Android 6.0 中,Input System 的核心组件是 `InputManagerService` (IMS)。本文将详细介绍 IMS 的工作原理及其与其他组件的交互方式。 #### InputManagerService 的启动与初始化 1. **启动过程**: - 在 `...
ANR(Application Not Responding)是指Android应用程序在执行过程中响应超时的一种异常状态。当应用程序长时间不响应用户的操作时,系统会提示用户该应用无响应,并提供是否强制关闭应用的选择。 #### Input处理...
是由InputManagerService 来监控的, 而InputManagerService 是由 SystemServer 来启动的 创建了一个类的对象 WindowInputEvent Receiver InputEventRe ceiver的构造 函数 WindowInputEventReceiver extends Input...
InputManagerService.java : 负责Input Reader 和 Input Dispatcher的创建, 并提供Policy 用于Events的预处理. WindowManagerService.java : 作为应用与IMS的通信桥梁, 也作为InputDispatcher向AMS报告ANR的...
在Android设备的硬件抽象层(HAL,Hardware Abstraction Layer)中,触摸屏驱动通过`InputManagerService`与上层应用程序框架交互,传递用户输入事件。当用户触摸屏幕时,触控IC检测到这些事件,驱动程序则将它们...
在Android框架层,`InputManagerService`负责接收这些事件并进行初步处理。 事件进入Android应用层后,会通过`WindowManager`服务的`ViewRootImpl`类进行分发。`ViewRootImpl`是连接应用程序和系统服务的关键组件,...
4. **框架层解析**:分析Android系统的InputManagerService和WindowManagerService如何处理来自硬件的输入事件,以及如何将这些事件传递给应用程序。 5. **图形渲染**:探讨OpenGL ES、 Vulkan等图形库在MMI中的...
3. **InputManagerService**:输入管理服务不仅管理触摸屏和其他输入设备,也处理耳机按键的输入事件。当耳机插入时,InputManagerService可能需要更新按键映射,以便处理耳机上的媒体控制按钮。 4. **...
这涉及到创建一个新的 HAL 层,使得 Android 系统能够通过 InputManagerService 与 tslib 交互。 5. **校准和配置**:在设备上运行 `ts_calibrate` 工具进行触摸屏校准,生成校准数据并保存。这些数据通常会被存储...
MediaTek(MTK)是一家知名的半导体公司,其芯片解决方案广泛用于各种移动设备,尤其是中低端市场。MTK的Android平台集成了大量的硬件接口和功能,包括对触摸屏的支持。因此,针对MTK方案的触摸屏驱动需要与MTK的...
4. **Android Framework**:驱动程序通常与Android框架中的服务进行交互,如InputManagerService处理输入事件,PowerManagerService控制电源状态。开发者需要熟悉这些服务的接口,以便正确地与之通信。 5. **驱动...
在Android系统中,输入事件的获取和分发是由InputManagerService的两个线程InputReader和InputDispatcher来负责。其中,InputReader通过EventHub获取各种类型的输入事件,并在事件入队前,通过InputDispatcher进行...
InputManagerService分发事件到WindowManagerService。 5. WindowManagerService根据窗口栈的顺序将事件分发给应用。 6. 应用接收到事件并根据事件类型进行相应的处理。 #### 七、总结 Android GUI系统是一个...