代码之家  ›  专栏  ›  技术社区  ›  Kakashi

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

  •  0
  • Kakashi  · 技术社区  · 6 年前

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

    任务 :

    用户向服务器请求新数据 ---GT; 服务器在JSON中提供新的数据(同时也向其他手机发送FireBase推送通知以进行同步) ---GT; asynctask/intentservice处理用户电话中的数据(插入/更新)

    我什么时候需要执行任务?

    1. 每次我按下保存按钮。
    2. 当用户收到类型为“同步”的FireBase推送通知时(我已经编写了这个脚本)。(脚本需要运行,不管应用程序是关闭的还是打开的,如果不单击通知,通知是不可单击的,只运行信息同步任务)

    所以我的问题是,我应该使用asyntask还是intentservice?

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Udit    6 年前

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

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