在应用程序启动时永远执行任务 - 永远 - Android

时间:2014-08-12 17:00:58

标签: android performance mobile android-sdk-2.3

我的应用程序需要具有一个(异步)任务,该任务始终是网络操作,并且第一次数据库查询

需要以一定的间隔时间执行,该时间间隔不固定(可能是1分钟或1小时或介于两者之间)以及应用程序未处于活动状态时。

在Asynctask / Thread / Service / Alarm /未提及的任何内容之间,这种情况下最好和最简单的解决方案是什么。

1 个答案:

答案 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;我想长时间检查每小时"