如何将数据库服务器同步到本地? IntentService或AsyncTask

时间:2018-07-12 15:45:33

标签: android android-asynctask android-intentservice

我正在创建需要脱机工作的应用程序。所以我需要在服务器数据库和本地数据库之间同步。我已经写了脚本来使用AsyncTask在服务器和本地之间进行同步,但是有时它无法立即(延迟)执行脚本,而且我不确定即使关闭了应用程序也可以执行asynctask。

任务

用户向服务器-> 请求新数据,服务器以JSON提供新数据(并向其他手机发送Firebase推送通知,以同步-> AsyncTask / IntentService处理用户电话中的数据(插入/更新)

何时需要执行任务?

  1. 每次我按保存按钮。
  2. 当用户收到类型为“ sync”的Firebase推送通知时(我已经编写了此脚本)。 (无论应用程序是关闭还是打开,都需要运行脚本,而无需单击通知,通知是不可单击的,仅信息同步任务正在运行)

所以我的问题是我应该为此目的使用AsynTask还是IntentService?

**任何有关通过翻新与IntentService进行同步的教程都会对我有很大帮助。

1 个答案:

答案 0 :(得分:1)

在IntentService和AsyncTask中,IntentService更适合于此目的。 AsyncTask不能独立生存,需要从Activity或服务中启动。另外,在这种情况下,您确实需要在任务完成时更改UI,因此AsyncTask成为不可能。

对于数据同步,您还可以查看WorkManager / JobScheduler。它使用API​​很好,并且会为您提供更好的同步选项,例如:连接到WiFi时同步,或者连接到充电器时同步。

相关问题