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

Which is more suitable? Service or AsyncTask or JobScheduler or Thread or Firebase JobDispatcher or ...?

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

由于我的最低 API 级别是 14,我认为 JobScheduler(需要 API 级别 21 或以上)已关闭 table。根据 Android reference for AsyncTask、"we suggest that you only use AsyncTask to handle work items shorter than 5ms in duration.",AsyncTask 也不是 suitable 选项。

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

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

希望对您有所帮助!

第一个也是最好的选择是 Google Firebase,当您处理 sending/receiving 通知(推送通知而不是拉取通知)时,它可以可靠且高效地使用移动资源。

如果你的最低 API 级别是 21!

,那么最好的选择是 jobscheduler

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

最后一枪是 Asynctask