gpt4 book ai didi

android - SQLite 是否适合在复制到服务器之前进行离线存储?

转载 作者:行者123 更新时间:2023-11-29 21:18:13 24 4
gpt4 key购买 nike

我正计划编写一个可以保存大量数据的应用程序。过去,我只是简单地将数据直接写入服务器,并且只使用一些简单的键/值存储和本地存储的共享首选项。

这次我在考虑,先用SQLite保存信息,然后在后台同步数据到服务器。这将在以下几个方面为用户带来好处:1) 可以离线使用应用程序 2) 不必担心数据会立即保存,只要有可能就会发生 3) 可靠性更高。

我的方法是在 UI 使用期间从 SQLite 获取/设置数据,并使用后台进程查找新行并将它们放在服务器上,并在发生时将它们标记为已同步。

这听起来合理吗?

最佳答案

您可以在您的场景中使用 SQLIte。但是,在实现时,您可以采用任何一种方法。

方法 #1:使用抽象工厂实例化 SQLiteOpenHelper。

方法 #2:将 SQLiteDatabase 包装在 ContentProvider 中

请参阅此链接了解如何实现这两种方法。 http://www.androiddesignpatterns.com/2012/05/correctly-managing-your-sqlite-database.html

使用SQLite需要注意的要点

  • Sqlite 负责文件级锁定。
  • 多个线程可以读,一个可以写。锁可防止不止一个写作。
  • Android 在 SQLiteDatabase 中实现了一些 java 锁定以帮助保持事情直截了当。
  • 如果我们从多个线程错误地处理数据库并弄乱代码,您的数据库不会被破坏。 只有少数更新会丢失。

“多线程 - 数据库访问”如何用于您的场景

SqliteOpenHelper 对象保持一个数据库连接。

如果您尝试同时从实际的不同连接(多个线程)写入数据库,一个将失败。它不会等到第一个完成后再写。它根本不会写您的更改。更糟糕的是,如果你没有在 SQLiteDatabase 上调用正确版本的插入/更新,你将不会得到异常。您只会在 LogCat 中收到一条消息,仅此而已。

因此建议使用单线程写入并在必要时从多线程读取以加快访问速度。

关于android - SQLite 是否适合在复制到服务器之前进行离线存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21030441/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com