【量产_冒烟】不断灭屏画手势出现系统优化界面
【初始条件】
手机正常
【操作步骤】
进入设置-智能控制-开启各个手势唤醒功能,不断灭屏画手势
【实际结果】
会出现系统优化界面
【预期结果】
不应出现系统优化界面
在设置pin密码锁的情况下,照理这时候不能解锁,更不会出现出现系统优化界面。
分析log,先看到event.log
01-10 16:40:29.033 9213 9554 I am_crash: [9213,0,system_server,-1,java.lang.NullPointerException,Attempt to invoke virtual method 'java.lang.String android.content.Intent.resolveTypeIfNeeded(android.content.ContentResolver)' on a null object reference,ContextImpl.java,941]
01-10 16:40:29.120 451 451 I sf_frame_dur: [,0,0,0,0,0,0,24]
01-10 16:40:29.120 451 451 I sf_frame_dur: [StatusBar,905,133,32,17,22,18,21]
01-10 16:40:29.121 451 451 I sf_frame_dur: [,0,1,0,0,1,0,0]
01-10 16:40:29.121 451 451 I sf_frame_dur: [,10,13,6,10,8,1,4]
01-10 16:40:30.597 14817 14817 I boot_progress_start: 668603
01-10 16:40:30.768 14817 14817 I boot_progress_preload_start: 668774
01-10 16:40:33.062 14817 14817 I boot_progress_preload_end: 671068
01-10 16:40:33.198 15158 15158 I boot_progress_system_run: 671204
01-10 16:40:33.472 15158 15158 I boot_progress_pms_start: 671478
01-10 16:40:34.220 15158 15158 I boot_progress_pms_system_scan_start: 672226
在去mainlog中去找这个时间段log信息,
先是GestureWakeUp服务在461行出现空指针异常
01-10 16:40:28.964 9213 9213 W ContextImpl: Calling a method in the system process without a qualified user: android.app.ContextImpl.startService:1238 com.yulong.android.uitechno.service.YLUIWatchService.startComponent:1619 com.yulong.android.uitechno.service.YLUIWatchService$WatchHandler.handleMessage:1590 android.os.Handler.dispatchMessage:102 android.os.Looper.loop:164
01-10 16:40:29.032 9213 9554 E AndroidRuntime: *** FATAL EXCEPTION IN SYSTEM PROCESS: GestureWakeUp
01-10 16:40:29.032 9213 9554 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Intent.resolveTypeIfNeeded(android.content.ContentResolver)' on a null object reference
01-10 16:40:29.032 9213 9554 E AndroidRuntime: at android.app.ContextImpl.sendBroadcastAsUser(ContextImpl.java:941)
01-10 16:40:29.032 9213 9554 E AndroidRuntime: at com.android.server.policy.GestureWakeUp$PolicyHandler.handleMessage(GestureWakeUp.java:461)
01-10 16:40:29.032 9213 9554 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:102)
01-10 16:40:29.032 9213 9554 E AndroidRuntime: at android.os.Looper.loop(Looper.java:164)
01-10 16:40:29.032 9213 9554 E AndroidRuntime: at android.os.HandlerThread.run(HandlerThread.java:61)
01-10 16:40:29.104 8885 8885 W AudioFlinger: power manager service died !!!
01-10 16:40:29.104 8885 8885 W AudioFlinger: power manager service died !!!
01-10 16:40:29.104 8885 8885 W AudioFlinger: power manager service died !!!
01-10 16:40:29.104 8885 8885 W AudioFlinger: power manager service died !!!
接下来导致keygurad挂了
01-10 16:40:29.143 9633 9633 E KeyguardIndicationController: Error calling IBatteryStats:
01-10 16:40:29.143 9633 9633 E KeyguardIndicationController: android.os.DeadObjectException
01-10 16:40:29.143 9633 9633 E KeyguardIndicationController: at android.os.BinderProxy.transactNative(Native Method)
01-10 16:40:29.143 9633 9633 E KeyguardIndicationController: at android.os.BinderProxy.transact(Binder.java:503)
01-10 16:40:29.143 9633 9633 E KeyguardIndicationController: at com.android.internal.app.IBatteryStats$Stub$Proxy.computeChargeTimeRemaining(IBatteryStats.java:1206)
01-10 16:40:29.143 9633 9633 E KeyguardIndicationController: at com.android.systemui.statusbar.KeyguardIndicationController.computePowerIndication(KeyguardIndicationController.java:170)
01-10 16:40:29.143 9633 9633 E KeyguardIndicationController: at com.android.systemui.statusbar.KeyguardIndicationController.computeIndication(KeyguardIndicationController.java:158)
01-10 16:40:29.143 9633 9633 E KeyguardIndicationController: at com.android.systemui.statusbar.KeyguardIndicationController.updateIndication(KeyguardIndicationController.java:140)
01-10 16:40:29.143 9633 9633 E KeyguardIndicationController: at com.android.systemui.statusbar.KeyguardIndicationController.access$300(KeyguardIndicationController.java:46)
01-10 16:40:29.143 9633 9633 E KeyguardIndicationController: at com.android.systemui.statusbar.KeyguardIndicationController$2.handleMessage(KeyguardIndicationController.java:224)
01-10 16:40:29.143 9633 9633 E KeyguardIndicationController: at android.os.Handler.dispatchMessage(Handler.java:102)
01-10 16:40:29.143 9633 9633 E KeyguardIndicationController: at android.os.Looper.loop(Looper.java:164)
01-10 16:40:29.143 9633 9633 E KeyguardIndicationController: at android.app.ActivityThread.main(ActivityThread.java:5613)
01-10 16:40:29.143 9633 9633 E KeyguardIndicationController: at java.lang.reflect.Method.invoke(Native Method)
01-10 16:40:29.143 9633 9633 E KeyguardIndicationController: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:752)
01-10 16:40:29.143 9633 9633 E KeyguardIndicationController: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:642)
在system_server挂了
01-10 16:40:29.773 8880 8880 E Zygote : Exit zygote because system server (9213) has terminated
01-10 16:40:29.991 14823 14823 I Log_level_control: YWW4
01-10 16:40:30.001 14823 14823 E : Failed to open libdatactrl, some features may not be present.
01-10 16:40:30.114 689 721 E slim_daemon: [NDK] bindNDKSensors: Sensor server is unavailable.
01-10 16:40:30.597 14817 14817 I Log_level_control: YWW4
01-10 16:40:30.621 14817 14817 W art : 70f30000-71f9d000 rw-p 00000000 103:12 2121733 /data/dalvik-cache/arm64/system@[email protected]
01-10 16:40:30.621 14817 14817 W art : 557c858000-557c85c000 r-xp 00000000 103:11 417 /system/bin/app_process64
01-10 16:40:30.621 14817 14817 W art : 557c86c000-557c86d000 r--p 00004000 103:11 417 /system/bin/app_process64
01-10 16:40:30.621 14817 14817 W art : 557c86d000-557c86e000 rw-p 00005000 103:11 417 /system/bin/app_process64
01-10 16:40:30.621 14817 14817 W art : 559c1fd000-559c239000 rw-p 00000000 00:00 0 [heap]
01-10 16:40:30.621 14817 14817 W art : 7f81c66000-7f840d4000 r--p 00000000 103:11 1575 /system/framework/arm64/boot.oat
01-10 16:40:30.621 14817 14817 W art : 7f840d4000-7f86737000 r-xp 0246e000 103:11 1575 /system/framework/arm64/boot.oat
01-10 16:40:30.621 14817 14817 W art : 7f86737000-7f86738000 rw-p 04ad1000 103:11 1575 /system/framework/arm64/boot.oat
01-10 16:40:30.621 14817 14817 W art : 7f86738000-7f86769000 r--p 0106d000 103:12 2121733 /data/dalvik-cache/arm64/system@[email protected]
01-10 16:40:30.621 14817 14817 W art : 7f86769000-7f8676a000 r--p 00000000 00:00 0 [anon:linker_alloc]
01-10 16:40:30.621 14817 14817 W art : 7f8676a000-7f8676b000 r-xp 00000000 103:11 3112 /system/lib64/libsigchain.so
去源码中,找到461行,
发现是
mContext.sendBroadcastAsUser(mGesture.intentB,
UserHandle.CURRENT);
然后加上try catch 捕获异常 即可
try {
mContext.sendBroadcastAsUser(mGesture.intentB,
UserHandle.CURRENT);
} catch (Exception e) {
e.printStackTrace();
Log.d(TAG, "wanlihua debug to avoid NullPointerException !");
}