我应该使用什么将数据库服务器同步到本地?IntentService或AsyncTask



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

任务

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

我什么时候需要执行任务

  1. 每次按下保存按钮时
  2. 当用户收到带有"sync"类型的firebase推送通知时(我已经写了这个脚本(。(无论应用程序是关闭还是打开,脚本都需要运行,如果不点击通知,通知是不可点击的,只是信息同步任务在运行(

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

**任何关于与IntentService进行改造同步的教程都会对我有很大帮助。

IntentService和AsyncTask之外,IntentService更适合用于此目的。AsyncTask无法独立运行,需要从"活动"或服务启动。此外,在这种情况下,您确实需要在任务完成时更改UI,因此AsyncTask是不可能的。

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