Android 安卓-通过改变方向来保持唤醒锁定?

Android 安卓-通过改变方向来保持唤醒锁定?,android,orientation,wakelock,Android,Orientation,Wakelock,我正在尝试创建一个只要用户选择就可以保持清醒的应用程序,甚至在方向改变的情况下也可以保持清醒 最初,我是这样做的:当用户决定应用程序应该保持清醒时,创建一个唤醒锁,然后在onPause()释放这个锁,这样它就不会永远保持不动。但是,当方向发生变化时,所讨论的活动将被销毁,并创建一个新的活动——我看不到将唤醒锁“移交”给新实例的方法 当然可以将其保存在已保存的实例状态中,但在活动被销毁时,不知道是因为方向更改,还是因为永久性的原因而销毁 有一种通用的方法来实现这一点吗?您可以在onPause()中

我正在尝试创建一个只要用户选择就可以保持清醒的应用程序,甚至在方向改变的情况下也可以保持清醒

最初,我是这样做的:当用户决定应用程序应该保持清醒时,创建一个唤醒锁,然后在onPause()释放这个锁,这样它就不会永远保持不动。但是,当方向发生变化时,所讨论的活动将被销毁,并创建一个新的活动——我看不到将唤醒锁“移交”给新实例的方法

当然可以将其保存在已保存的实例状态中,但在活动被销毁时,不知道是因为方向更改,还是因为永久性的原因而销毁


有一种通用的方法来实现这一点吗?

您可以在
onPause()
中调用
isFinishing()


我认为您应该能够使用:

。。。要区分配置更改(方向)和实际终止

,如中所述,您可以使用onCreate()中的“保持屏幕打开”标志:


如果你只需要一个活动的wakelock,那就足够了,这样你就不需要wakelock许可了。

我来参加这个聚会有点晚了,但我是这样做的

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK|PowerManager.ON_AFTER_RELEASE, "DoNotDimScreen");
接着是

wl.acquire();
。。。当您需要实际激活唤醒锁时

“PowerManager.ON\u AFTER\u RELEASE”标志会戳破用户活动计时器,以便在释放此唤醒锁时,屏幕会保持稍长的时间,当您的活动因方向改变而被破坏时就是这种情况


非常适合我

解决方案可用,如果您需要的不是
屏幕_明亮_唤醒_锁定
:。

谢谢您的提示。虽然看起来这也不是那么简单。例如,WakeLock是不可打包的,因此无法直接保存在onSaveInstanceState()中。此外,该活动在方向更改时仍然会被破坏,即使它还没有结束:(谢谢-但我有一个活动,而不是片段,而且这似乎只适用于片段右…看这里:在关于添加片段wo/a UI的部分。该示例与您正在尝试做的非常类似。
wl.acquire();