2013-02-23 53 views
0

我试图创建一个应用程序,只要用户选择它就会保持清醒状态,并且在方向更改的情况下它甚至会保持清醒状态。android - 通过方向更改保持唤醒锁?

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

当然可以将其保存在已保存的实例状态中 - 但是当活动被破坏时,人们不知道是因为方向改变的原因,还是因为方便改变而被破坏。

有没有一种通用的方法来实现这一目标?

回答

0

我想你应该能够使用:

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

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

+0

谢谢 - 但我有一个活动,而不是一个片段,这似乎只适用于碎片 – 2013-02-24 08:06:24

+0

正确...看这里:http ://developer.android.com/guide/components/fragments.html在关于添加Fragment wo/a UI的部分中,这个例子非常类似于你想要做的事情。 – 2013-02-24 15:22:48

1

如还提到区分Android: Wakelock & handling orientation change,可以使用onCreate()中的FLAG_KEEP_SCREEN_ON标志:

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

如果你只需要一个活动的唤醒锁,那应该就足够了,所以你甚至不需要唤醒锁的权限。

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”标志戳动用户活动计时器,以便在释放此唤醒锁时屏幕保持一段时间,当您的活动在方向更改时销毁时将会出现这种情况。

完美适合我!