我的应用需要在用户点击一个按钮12或24小时后执行myAction()
。Android - AlarmManager或TimerTask/Timer在x小时内执行操作?
我知道我不能使用handler.postDelayed(Runnable, long)
这是因为long
参数是基于uptime而不是实际时间。
所以我觉得我只是留下了TimerTask/Timer或AlarmManager,但我不知道其中哪些是最合适的 - 再加上,我听到了很多有关的TimerTask /定时器坏的评论,说这是不可靠等
另外,我有要求,如果设备重新启动,那么我仍然需要myAction()
执行在同一时间(或尽可能快),就好像该设备从来没有已关闭。对于这个要求,也许我需要将myAction()
的详细信息存储在数据库中,然后在设备重新启动时使用BootReceiver调用它来执行,但是如果有类可以处理这个问题,它也会很好。
那么在12/24小时的时间内调用myAction()
的适当和可靠的方法是什么,同时适应设备重启?
“我听到很多关于TimerTask/Timer的错误评论,说它不可靠“ - 好吧,它假设你的过程会持续很长时间。这是不太可能的,除非它是前台服务,并且这往往会刺激用户,除非有明显的原因。即使它是前台服务,也不能保证你的流程能够持续这么久,尽管它更有可能。一般来说,考虑到正在进行的后台处理战争,除了闹钟情景之外,试图在特定时间进行后台工作将会相当严重。 – CommonsWare