我的应用程序需要具有一个(异步)任务,该任务始终是网络操作,并且第一次数据库查询。
需要以一定的间隔时间执行,该时间间隔不固定(可能是1分钟或1小时或介于两者之间)以及应用程序未处于活动状态时。
在Asynctask / Thread / Service / Alarm /未提及的任何内容之间,这种情况下最好和最简单的解决方案是什么。
答案 0 :(得分:1)
为此你需要一个服务,而不是AsyncTask:
http://www.vogella.com/tutorials/AndroidServices/article.html
即使在活动被解雇后,服务仍然存在。但要小心,耗尽电池会激怒用户。此外,如果内存不足,服务可能会被破坏,所以要小心。
将来要运行的任务的调度应该使用AlarmManager。操作的执行应该在服务中运行,因为您指定有时它会在应用程序未处于活动状态时发生。
您也可以使用TimerTask,但它对电池的消耗更多,而不像AlarmManager那么精确。您还可以使用postAtTime处理程序
这是一个很好的参考:
difference between timer and alarmmanager
另一个:
What is better in Android? Timer or Alarm?
这实际上取决于频率和用例。我已经使用了所有这些 - 我将TimerTasks视为"经常在短时间内进行检查"和#34的处理程序;在一段时间后再次检查"与AlarmManager for#34;我想长时间检查每小时"