android - 通过方向更改保持唤醒锁?

时间:2013-02-23 20:20:54

标签: android orientation wakelock

我正在尝试创建一个只要用户选择它就会保持清醒的应用程序 - 它甚至会在方向更改的情况下保持清醒状态。

最初我通过在用户决定应用程序应该保持唤醒状态时创建唤醒锁定,然后在onPause()处释放此锁定来完成此操作,这样它就不会永久保留。但是,当方向发生变化时,有问题的活动会被销毁,并且会创建一个新的活动 - 而且我没有办法将唤醒锁定“移交”给新实例。

当然可以将其保存在已保存的实例状态中 - 但是在活动被销毁时,人们不知道它是否因为方向改变而被破坏,或者它是否被毁坏了。

是否有通用的方法来实现这一目标?

5 个答案:

答案 0 :(得分:1)

Android: Wakelock & handling orientation change中所述,您可以在onCreate()中使用FLAG_KEEP_SCREEN_ON标志:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

如果你只需要那个活动的唤醒锁,那就足够了,所以你甚至不需要获得唤醒锁许可。

答案 1 :(得分:0)

答案 2 :(得分:0)

我认为你应该可以使用:

http://developer.android.com/reference/android/app/Fragment.html#setRetainInstance(boolean)

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

答案 3 :(得分:0)

我参加这个聚会有点迟了,但这就是我这样做的方式......

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

接下来......

wl.acquire();

......当你需要实际激活唤醒锁时。

“PowerManager.ON_AFTER_RELEASE”标志会激活用户活动计时器,以便在释放此唤醒锁定时屏幕保持打开状态,这将是您在更改方向时销毁活动时的情况。

完美适合我!

答案 4 :(得分:0)

如果您需要的不是SCREEN_BRIGHT_WAKE_LOCKsee my answer here

,则可使用此解决方案