我有一个重复的任务,它发送http请求并在SQLite中保存响应。我实现了一个警报重复和AsyncTask来处理网络工作。
由于我的最低API级别是14,我认为JobScheduler(需要API级别21或更高级别)不在桌面上。根据{{3}},"我们建议您仅使用AsyncTask来处理持续时间小于5毫秒的工作项。"所以AsyncTask也不是一个合适的选择。
我的网络工作需要几秒钟才能完成,并且会定期重复。什么是处理此网络工作的最佳解决方案(在性能和可靠性等方面)?
答案 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
。