Android运行线程每1秒增加一次Unix时间戳

时间:2015-08-05 04:40:14

标签: java android multithreading

我需要每秒运行一次线程。但是当应用程序被杀死时,线程必须仍然存活

我的线程任务用于增加Unix时间戳(在第一次应用程序从我们的服务器时间运行时同步)每秒一次。我需要创建此任务,因为在某些设备中,日期时间可能会发生不可预测的变化(可能是电池电量不足,硬复位,掉线或其他情况)。

My Activity必须在需要时获取Unix Timestamp值。

从SO,Alarm Manager is not a good choice

I would recommend you not to use an AlarmManager for 30 seconds, as some have suggested. Because 30 seconds is too short. it will drain the battery. For AlarmManager use a minimum 1 minute with RTC.

其他人建议使用Timer Task或ScheduledExecutorService,哪个最适合我需要的帖子?

感谢。

1 个答案:

答案 0 :(得分:0)

你永远不会实现这一目标。任何进程都可能被系统杀死。每秒运行的任务都很糟糕(就像AlarmManager所说的那样)。

一个想法是:节省您的服务器时间和设备时间,例如SystemClock.elapsedRealtime()。 (不要为此目的使用System.currentTimeMillis() ....这是用户的显示时间,可以由用户或其他方式更改)。 如果以后需要时间,请再次获取elapsedRealtime()并与存储的elapsedRealtime()进行比较,并将此差异添加到存储的服务器时间。你会得到理想的时间。

或者只是询问服务器的当前时间,取决于需求:)。

如果您想关注硬重置,我认为您应该在服务器上安装数据库,以便在用户启动应用时第一次进行管理。