睡眠模式检测

时间:2012-06-18 08:59:25

标签: android

设备用于进入“睡眠”模式,它会再次启动我的活动的onCreate()方法,这是不可取的。

例如,我有一个使用VideoView的活动,它在onCreate方法中初始化,因此当设备“休眠”时,它会重新创建我的播放器并启动播放器。

如何克服这个?它与系统广播有关吗?

2 个答案:

答案 0 :(得分:1)

最终,在调用onPause()后,您永远不能阻止系统终止您的应用程序。您必须始终编写应用程序,以便可以重新启动它。在实践中,这意味着a)实施onRetainNonConfigurationInstance()以捕获非常短期的破坏和重新创建您的应用程序,b)覆盖onSaveInstanceState(Bundle)以捕获中期销毁/重新创建,以及c)覆盖onPause()以处理长期破坏/重建。

在大多数情况下,onSaveInstanceState()是您真正需要实施的唯一},但onRetainNonConfigurationInstance()可以是真正的优化。

在您的特定情况下,您的onSaveInstanceState()会将您的视频文件的URI和最后播放的时间戳写入Bundle,因此当您的应用重新启动时,您可以返回视频中播放的最后一个位置创建

至于唤醒锁,这些是可接受的,例如:让您的设备在观看视频时不会进入睡眠状态。它们可以保持您的应用程序不被杀死,因此您不必经历第二次通过onCreate()的麻烦。首先,它会杀死电池,其次,无论如何都无法保证。

最后要注意的是:如果您没有这样做,则应确保您的视频播放活动设置了“singleTop”属性,因此您不会在活动堆栈中获得多个实例。

答案 1 :(得分:0)

您可以使用AlarmManager触发窗口小部件的刷新。在安排下一个周期时,您可以定义是否唤醒您的设备(也就是执行实际任务)。

    alarmManager.set(wakeUpType, triggerAtTime, pendingIntent);