1

我有一个发送 http 请求并将响应保存在 SQLite 中的重复任务。我实现了一个重复的警报和 AsyncTask 来处理网络作业。

由于我的最低 API 级别是 14,我认为 JobScheduler(需要 API 级别 21 或更高)不在讨论范围内。根据AsyncTask 的 Android 参考资料,“我们建议您仅使用 AsyncTask 来处理持续时间短于 5 毫秒的工作项。” 所以 AsyncTask 也不是一个合适的选择。

我的网络工作需要几秒钟才能完成,并且会定期重复。处理此网络作业的最佳解决方案是什么(在性能和可靠性等方面)?

4

2 回答 2

0

就计算时间而言,我建议您使用线程而不是 AsyncTasks,主要原因之一是因为在 AsyncTasks 中您控制任务的选项有限,它们是 (onPreExecute()、doInBackground(Params...) , onProgressUpdate(Progress...),onPostExecute(Result) 等),否则使用 Threads,您可以更有效地同步 http 请求和响应中的时间,例如在特定时间段内休眠和通知您的进程。如果你的网络工作需要几秒钟才能完成,也许你应该睡觉并定期通知它。

希望能帮助到你!

于 2017-04-05T11:09:11.817 回答
0

第一个也是最好的选择是Google Firebase在处理发送/接收通知(推送通知而不是拉取通知)时使用移动资源可靠且高效。

之后,最好的选择是jobscheduler您的最低 API 级别为21

其次,IntentService适合像网络作业这样的长任务,因为它有单独的线程而不是UI 线程(只是onHandleIntent有单独的线程)。

最后一枪是Asynctask

于 2017-05-06T11:38:24.323 回答