【发布时间】:2015-01-13 15:30:01
【问题描述】:
我正在尝试建立类似待机的活动,并且我已接近目标,但我发现的唯一问题是有时在我关闭屏幕后 Android 会立即打开它,但我不明白为什么.
我有一个连接到专有板的终端,当我启动特定活动时,我可以让板向我的设备发送消息以关闭屏幕。结果是屏幕关闭,但只是片刻,因为 Android 立即打开屏幕。
这是我的应用程序的日志
I/ProprietaryStandbyActivity(31326): onCreate
I/ProprietaryStandbyActivity(31326): terminalDisplayOff 192.168.0.123
Sending UDP message to turn Off the screen
D/WindowManager( 2147): mBootFastRuning = false shutdhownPending = false
D/InputManager-JNI( 2147): handleInterceptActions: Not passing key to user.
D/OpenGLRenderer(31326): Enabling debug mode 0
I/ActivityManager( 2147): Displayed ProprietaryStandbyActivity: +208ms
D/WindowManager( 2147): mBootFastRuning = false shutdhownPending = false
D/InputManager-JNI( 2147): handleInterceptActions: Going to sleep.
D/InputManager-JNI( 2147): handleInterceptActions: Not passing key to user.
I/PowerManagerService( 2147): Going to sleep by user request...
I/LQ ( 2147): ########## Thread(StopWifi).start( !!!!
D/SurfaceFlinger( 1302): Screen released, type=0 flinger=0xb84ed450
E/IMGSRV ( 1302): :0: ####hwc_device_blank: disp:0 blank:1
V/ProprietaryStandbyActivity(31326): Called onPause
I/ProprietaryStandbyActivity(31326): onStop
D/PowerManagerService-JNI( 2147): Excessive delay in autosuspend_enable()
while turning screen off: 380ms
D/UdpExecutor(30580): ###UDP socket listening...
D/WindowManager( 2147): mBootFastRuning = false shutdhownPending = false
D/InputManager-JNI( 2147): handleInterceptActions: Waking up.
D/SensorManager( 2147): >>>>>>> set discard sensrtime =3
E/&&&&&& ( 2147): /data/user/gsensor_data ----> not exists.
D/InputManager-JNI( 2147): handleInterceptActions: Not passing key to user.
D/SurfaceFlinger( 1302): Screen acquired, type=0 flinger=0xb84ed450
E/IMGSRV ( 1302): :0: ####hwc_device_blank: disp:0 blank:0
I/PowerManagerService( 2147): Waking up from sleep...
V/KeyguardServiceDelegate( 2147): onScreenTurnedOn(showListener =
com.android.internal.policy.impl.PhoneWindowManager$18@41da4ae0)
V/KeyguardServiceDelegate( 2147): **** SHOWN CALLED ****
I/WindowManager( 2147): No lock screen! windowToken=null
看不懂的奇怪日志就是这一行
D/InputManager-JNI( 2147): handleInterceptActions: Waking up.
似乎 InputManager 类以某种方式接收到唤醒屏幕的输入,即使我没有输入。 有人知道为什么会这样吗?
【问题讨论】:
-
你必须调试你的代码才能知道真正的原因。也许您正在使用一个在休眠期后唤醒的线程。
-
显然我调试了我的代码,但我没有打开屏幕的指令。您是否建议某些服务仅仅因为在后台运行而可以打开屏幕?这将是一种非常奇怪的行为。
-
也许您的某个服务或线程正在使用 WindowManager 或 WakeLock 类做一些事情。这可能会导致您的屏幕打开。这只是一个猜测!
标签: android screen standby powermanager