Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在应用程序启动时在后台执行任务,并且永远执行任务-Android_Android_Performance_Mobile_Android Sdk 2.3 - Fatal编程技术网

在应用程序启动时在后台执行任务,并且永远执行任务-Android

在应用程序启动时在后台执行任务,并且永远执行任务-Android,android,performance,mobile,android-sdk-2.3,Android,Performance,Mobile,Android Sdk 2.3,我的应用程序需要一个(异步)任务,该任务始终是网络操作,第一次也是数据库查询 它需要以一定的时间间隔执行,该时间间隔不是固定的(可以是1分钟或1小时或两者之间的任何时间),也可以在应用程序未激活时执行 在这种情况下,Asynctask/Thread/Service/Alarm/任何未提及的内容之间的最佳和最简单的解决方案是什么。为此,您需要的是服务,而不是Asynctask: 即使在活动被取消后,服务仍然存在。不过要小心,耗尽电池会激怒用户。此外,如果内存不足,服务可能会被破坏,所以要小心 将

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

它需要以一定的时间间隔执行,该时间间隔不是固定的(可以是1分钟或1小时或两者之间的任何时间),也可以在应用程序未激活时执行


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

为此,您需要的是服务,而不是Asynctask:

即使在活动被取消后,服务仍然存在。不过要小心,耗尽电池会激怒用户。此外,如果内存不足,服务可能会被破坏,所以要小心

将来要运行的任务的调度应使用AlarmManager。该操作的执行应在服务中运行,因为您指定有时会在应用程序未激活时执行

您也可以使用TimerTask,但它会消耗更多的电池电量,而且不如AlarmManager精确。您还可以使用处理程序来处理PostAttribute时间

这里有一个很好的参考:

还有一个:


这实际上取决于频率和用例。我使用了所有这些-我将TimerTask视为“短时间内频繁检查”,而将Handler视为“稍后再检查”,将AlarmManager视为“我想长时间内每小时检查一次”

为什么不使用AlarmManager?为了安排我的服务,我使用了计时器,有什么不对吗?我重新编辑了答案,因为这取决于你如何使用它。