Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 当屏幕变为非活动状态时,计时器似乎暂停_Android - Fatal编程技术网

Android 当屏幕变为非活动状态时,计时器似乎暂停

Android 当屏幕变为非活动状态时,计时器似乎暂停,android,Android,所以我有一个非常简单的android活动,当你按下一个按钮时,它会启动一个计时器 Timer=new Timer() timer.schedule(新TimerTask(){ @覆盖 public void run(){ doStuff(); } }, 15 * 60 * 1000); 因此,在我测试时,这对我来说相当有效,但当屏幕变为非活动状态时,计时器也会变为非活动状态。我对此感到有点惊讶。我知道你需要创建一个服务,让任何东西在后台运行,但我没有意识到这是前台活动所必需的,因为手机由于缺少活

所以我有一个非常简单的android活动,当你按下一个按钮时,它会启动一个计时器

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
方法可能就足够了。