我的应用程序需要执行一个(异步)任务,该任务始终是网络操作,也是第一次执行数据库查询。
它需要以一定的时间间隔执行,该时间间隔不是固定的(可以是1分钟或1小时或两者之间的任何时间),并且在应用程序不活动时也可以。
在这种情况下,Asynctask / Thread / Service / Alarm /未提及的任何东西之间最好和最简单的解决方案是什么。
为此,您需要服务而不是AsyncTask:
http://www.vogella.com/tutorials/AndroidServices/article.html
即使取消活动,服务仍然存在。但是请小心,排干电池会激怒您的用户。另外,如果内存不足,服务可能会被破坏,因此请小心。
计划将来运行的任务时,应使用AlarmManager。该操作的执行应在服务中运行,因为您指定有时在应用程序不活动时会发生该操作。
您也可以使用TimerTask,但是这会消耗更多的电量,并且不如AlarmManager精确。您还可以使用处理程序来发布时间
这是一个很好的参考:
还有一个:
这实际上取决于频率和用例。我已经使用了所有这些方法-我将TimerTasks视为“经常短时检查”,而将处理程序视为“一会儿再次检查”,而对于AlarmManager则是“我想长时间保持每小时检查”
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句