我的应用程序在屏幕变黑时执行某些操作,但我希望它只在屏幕被“自身”关闭时通过屏幕超时执行该任务 - 而不是在用户按下电源按钮时。有没有办法区分这两个事件?
ACTION_SCREEN_OFF
在这两种情况下都会明显触发,我还没有找到任何其他可能与我正在寻找的意图相符的意图。
答案 0 :(得分:4)
在较低级别,当屏幕超时时会发生一个事件,看看“adb logcat”,你会看到它,从那里挖掘。
答案 1 :(得分:1)
服务无法直接处理按钮事件。也许你可以让你的活动注册一个广播接收器,以便在屏幕关闭时收到通知,然后让活动检查最后一个按键,看它是否是电源按钮 - 如果不是那么你可以发送一个广播到您的服务,让它运行任何你想要的。
答案 2 :(得分:1)
这是一个有趣的问题:)尽管不准确,但您可以尝试对用户上次触摸事件以及您的活动暂停时间进行抽样 - 并查看它是否适合screen off timeout
答案 3 :(得分:0)
你能听一下KEYCODE_POWER键盘事件吗?这可能会做你想要的。 (但可能无法保证和ACTION_SCREEN_OFF到达的顺序。)