Android 当屏幕变为非活动状态时,计时器似乎暂停
所以我有一个非常简单的android活动,当你按下一个按钮时,它会启动一个计时器Android 当屏幕变为非活动状态时,计时器似乎暂停,android,Android,所以我有一个非常简单的android活动,当你按下一个按钮时,它会启动一个计时器 Timer=new Timer() timer.schedule(新TimerTask(){ @覆盖 public void run(){ doStuff(); } }, 15 * 60 * 1000); 因此,在我测试时,这对我来说相当有效,但当屏幕变为非活动状态时,计时器也会变为非活动状态。我对此感到有点惊讶。我知道你需要创建一个服务,让任何东西在后台运行,但我没有意识到这是前台活动所必需的,因为手机由于缺少活
Timer=new Timer()
timer.schedule(新TimerTask(){
@覆盖
public void run(){
doStuff();
}
}, 15 * 60 * 1000);代码>
因此,在我测试时,这对我来说相当有效,但当屏幕变为非活动状态时,计时器也会变为非活动状态。我对此感到有点惊讶。我知道你需要创建一个服务,让任何东西在后台运行,但我没有意识到这是前台活动所必需的,因为手机由于缺少活动而禁用了屏幕。让我困惑的是,我认为这是我最初预期的效果,就在最近几周左右,定时器受到了手机节电的影响。不过我可能错了
所以基本上我的问题是:我看到预期的行为了吗?我是否需要将所有计时器创建为服务,还是以某种方式不允许省电
谢谢你的建议,
帕特里克
我对此感到有点惊讶
当屏幕关闭时,CPU随即关闭。你的Timer
用户与此无关,因为这是Java的东西,而不是Android的东西
让我困惑的是我认为
按照我原来的预期工作
就在最近几周左右
计时器受电话影响
节约能源
我对此深表怀疑
我看到预期的行为了吗
对
我是否需要将所有计时器创建为
服务还是以某种方式不允许
省电
如果您有必须打开屏幕和设备的活动,请使用:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
然而,这应该是像一个视频播放器的东西
如果您试图执行类似Windows计划任务或Linux cron作业的操作,您将需要使用AlarmManager
和IntentService
,可能是一个
还有其他的可能性,但我不知道您要构建什么。这基本上只是一个警报。当15分钟结束时,它会发出噪音。谢谢你的回答。如果闹钟在15分钟后一定要响,你需要投资于AlarmManager
。只有当您的活动正在运行时,“保持屏幕打开”技巧才会起作用,用户可以按BACK退出活动,或启动另一个应用程序或其他操作。如果您只关心活动启动和运行时的计时器,那么标志\u KEEP\u SCREEN\u ON
方法可能就足够了。