暂时黑屏问题分析

插拔USB键盘和无线USB鼠标屏幕会黑一下,偶尔会死机,U盘插拔没有这个现象,

黑屏一般是由于config 改变导致横竖屏切换形成的

frameworks/base/services/core/java/com/android/server/input/InputManagerService.java
+++ b/device/common_jmgo/overlay/frameworks/base/services/core/java/com/android/server/input/InputManagerService.java
@@ -1382,7 +1382,8 @@ public class InputManagerService extends IInputManager.Stub
 
     // Native callback.
     private void notifyConfigurationChanged(long whenNanos) {
- mWindowManagerCallbacks.notifyConfigurationChanged();
+ //solve screen off when input device connect
+ //mWindowManagerCallbacks.notifyConfigurationChanged();
     } 
     
     
01-01 22:55:21.204  1773  2217 I ActivityManager: Config changes=30 {1.0 ?mcc?mnc zh_CN ldltr sw540dp w960dp h540dp 320dpi lrg long land television -touch qwerty/v/v dpad/v s.6}
01-01 22:55:21.238  2811  2811 I TvService: onConfigurationChanged()
01-01 22:55:21.252  1232  1232 D SurfaceFlinger: [capture screen]:maxLayerZ = -1
01-01 22:55:21.252  1232  1232 D hwcomposer: [capture screen]:startCapture ctx->captureScreenAddr = 7f9f8ca000,capture width = 1920,height = 1080
01-01 22:55:21.252  1232  1232 D hwcomposer: [capture screen]:Start_Capture 


import android.util.Slog;
Slog.d(TAG, "",new RuntimeException("here").fillInStackTrace());


lsusb
hciconfig


Input消息的处理流程:

处理流程从NativeRreImeInputStage -> ViewPreImeStage -> ImeStage -> EarlyPostImeStage -> NativePostImeStage -> ViewPostImeInputStage -> SyntheticInputStage。
01-01 20:06:23.805  4400  4400 V ViewRootImpl: ViewPreImeInputStage processKeyEvent
01-01 20:06:23.805  4400  4400 V ViewRootImpl: EarlyPostImeInputStage processKeyEvent
01-01 20:06:23.856  4400  4400 V ViewRootImpl: ViewPostImeInputStage processKeyEvent

01-01 20:04:15.752  4367  4367 V ViewRootImpl: NativePostImeInputStage sendInputEvent
01-01 20:04:15.803  4367  4367 V ViewRootImpl: NativePostImeInputStage handled=true

01-01 20:04:29.523  4367  4367 V ViewRootImpl: NativePostImeInputStage handled=false

NativePostImeInputStage:
mInputQueue.sendInputEvent(q.mEvent, q, false, this);
onFinishedInputEvent

AInputQueue_finishEvent//app内部消耗掉了

NativePreImeInputStage、ViewPreImeInputStage、ImeInputStage三个类用来实现输入法的按键派发和处理,如果事件不传递到输入法服务中,这三个类可以跳过

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章