设备用于进入“睡眠”模式,它会再次启动我的活动的onCreate()方法,这是不可取的。
例如,我有一个使用VideoView的活动,它在onCreate方法中初始化,因此当设备“休眠”时,它会重新创建我的播放器并启动播放器。
如何克服这个?它与系统广播有关吗?
答案 0 :(得分:1)
最终,在调用onPause()
后,您永远不能阻止系统终止您的应用程序。您必须始终编写应用程序,以便可以重新启动它。在实践中,这意味着a)实施onRetainNonConfigurationInstance()
以捕获非常短期的破坏和重新创建您的应用程序,b)覆盖onSaveInstanceState(Bundle)
以捕获中期销毁/重新创建,以及c)覆盖onPause()
以处理长期破坏/重建。
在大多数情况下,onSaveInstanceState()
是您真正需要实施的唯一1>},但onRetainNonConfigurationInstance()
可以是真正的优化。
在您的特定情况下,您的onSaveInstanceState()
会将您的视频文件的URI和最后播放的时间戳写入Bundle,因此当您的应用重新启动时,您可以返回视频中播放的最后一个位置创建
至于唤醒锁,这些是可接受的,例如:让您的设备在观看视频时不会进入睡眠状态。它们不可以保持您的应用程序不被杀死,因此您不必经历第二次通过onCreate()的麻烦。首先,它会杀死电池,其次,无论如何都无法保证。
最后要注意的是:如果您没有这样做,则应确保您的视频播放活动设置了“singleTop”属性,因此您不会在活动堆栈中获得多个实例。
答案 1 :(得分:0)
您可以使用AlarmManager触发窗口小部件的刷新。在安排下一个周期时,您可以定义是否唤醒您的设备(也就是执行实际任务)。
alarmManager.set(wakeUpType, triggerAtTime, pendingIntent);