java - 在 Android 应用程序中同步数据

标签 java android

<分区>

我正在开发一个应用程序,它可以在几乎每个 Activity 中通过 JSON 同步不同的数据。此数据可能会被其他设备操纵,因此我必须尽可能更新它。

例如,在第一个 Activity 中,我登录到 Web 服务,在下一个 Activity 中,我使用 AsyncTask 下载一个 JSON,告诉我商店中的所有车型,并使用该信息创建一个 ListView。单击一行,我调用另一个 AsyncTask 来下载关于那辆车的特定信息 (JSON),并获取例如关于它的轮胎的信息。在下一个 Activity 中,我将调用另一个 AsyncTask 来获取有关这些轮胎的具体信息。大多数时候,下一个 Activity 中使用的所需信息存储在 SharedPreferences 中,因为我不知道如何在整个应用程序中访问 ArrayLists,而且我不知道它是否会占用大量 RAM。如果通过应用程序共享这么多对象是个好主意。

您可以看到,每次重新加载我的 Activity 时,AsyncTask 都会检查连接并下载要显示的新数据。该服务不支持推送,所以我想我有责任每次都检查它,对吗?

另一件需要考虑的事情是下载的数据可以更改,在这种情况下,我必须上传 JSON,并相应地刷新 View 。在这方面,我不知道如何保存“更改”以在连接断开时上传。例如,创建未同步任务的排队列表。

结果是一个严重依赖互联网连接的应用程序,每次恢复 Activity 时都感觉很慢。

在大多数情况下,我会实例化一个新的对象(汽车、轮胎等)ArrayList,但如果现在一切都是对象,我很困惑如何正确地将数据同步回 JSON。也许使用 GJON?

我真的需要一些有关如何管理此类应用的提示。

谢谢

最佳答案

只是我的想法很快。因为我有 2 个非常相似的应用程序...即与在线服务/数据库紧密耦合。

您确实需要一个使用 sqlite 的本地数据库。

这是我建议您如何处理当前从服务器下载数据以显示的每个 Activity 的示例:

1) 你可以做的是每次屏幕加载时,比如 "ListCarsActivity"当 onResume() 运行时你需要首先调用你的本地数据库,得到您最近的数据,然后将这些结果显示在屏幕上,在您的 ListView 等中。这将为用户提供更快的反馈。

2) 在此之后,在 onResume() 中,您需要调用一个 WebService 对象,比如 WSGetCars,它将启动一个 Async 任务到 < strong>A) 连接到服务器,下载 JSON/XML,解析数据并更新数据库(添加或更新等)B) 通过具有访问权限的帮助对象 Activity 重新运行数据库调用,以使用新数据刷新列表。

简而言之:

  1. 加载屏幕,并使用本地 FAST 数据库中的汽车列表填充列表
  2. 立即异步下载更新的汽车数据并同步本地数据库
  3. 刷新汽车列表。

您可以在整个应用程序中使用此原则。

是否使用我对 Web 服务对象的建议取决于您。但我通常有 Activity,它调用 WS 对象进行下载,然后利用 XML 解析对象等。

希望这在概念层面上有所帮助

注意:您还需要在每个 WS/Async 调用周围使用一个简单的 IF 语句,以便应用程序不会尝试连接到服务器,除非您有互联网连接。允许您的应用程序在“离线”时仍能正常工作(即使数据可能已过时)。

关于登录屏幕:您可以使用 SharedPreferences 来检查他们是否已经在每次 onResume() 加载时登录,如果登录则自动加载系统的内部页面。我的应用程序不允许在没有互联网连接的情况下登录。因此,这允许应用程序在他们已经登录的最后状态下仍然可以工作。

关于java - 在 Android 应用程序中同步数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15238443/

相关文章:

java - 添加了新的 Pushpixal 主题,但没有变化

java - BouncycaSTLe PBEWITHSHA256AND256BITAES-CBC-BC Javascript 实现

java - Facelet - img 标签

java - 如何使用android在sqlite中存储警报?

安卓图像按钮

android - 在 android 中关闭 webapp 时 cookie 被清除

java - 查找elasticsearch聚合计数

android - 离开 Activity 时, ListView 中的光标位置丢失

android - 什么是 Android ADB shell "dumpsys"工具,它有什么好处?

java - 新的 jre、jdk 更新后,无法在 Netbeans 中生成 jar