哪个更合适? Service或AsyncTask或JobScheduler或Thread或Firebase JobDispatcher或......?

时间:2017-04-05 10:48:31

标签: android android-asynctask android-service alarmmanager android-jobscheduler

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

由于我的最低API级别是14,我认为JobScheduler(需要API级别21或更高级别)不在桌面上。根据{{​​3}},"我们建议您仅使用AsyncTask来处理持续时间小于5毫秒的工作项。"所以AsyncTask也不是一个合适的选择。

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

2 个答案:

答案 0 :(得分:0)

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

希望它有所帮助!

答案 1 :(得分:0)

第一个也是最好的选项是Google Firebase,在您处理发送/接收通知时使用移动资源是可靠和有效的(推送通知而非拉动通知)。

如果您的最低API级别 21 ,那么最好的选择是jobscheduler

接下来,IntentService适用于网络作业等长任务,因为它有单独的线程,而不是 UI线程(只有onHandleIntent有单独的线程)。

最后一次拍摄是Asynctask