【问题标题】:Best Practice for saving list of connection settings保存连接设置列表的最佳实践
【发布时间】:2017-04-29 14:18:21
【问题描述】:

我正在寻找存储连接设置列表的最佳解决方案。 一般来说,我知道有不同的选择:

  • 共享偏好
  • 文本文件
  • SQL 精简版

连接的数据结构如下所示:

  • 连接类型(TCP、FTP、蓝牙...)
  • 服务器名称
  • 用户名
  • 密码

我有多个上述连接设置。

优缺点

  • SharedPreferences:很好用,因为 android 支持使用 Preference Activity 自动更新。但 SharedPreferences 将由键值对存储。所以我必须通过定义好的键或将每个连接设置存储在新的 SharedPreferences 文件中来处理这个问题。
  • 文本文件:难以处理此类数据。
  • SQL Lite:看起来是最佳选择,但不确定是否需要大量存储开销,我必须管理每次数据更新。

【问题讨论】:

    标签: android sqlite sharedpreferences


    【解决方案1】:

    您有多行多列的数据。 SQL 数据库就是专门为处理这个问题而设计的。

    与任何其他机制相比,没有任何开销,您必须在自己的代码中复制一些数据库代码。

    【讨论】:

    • 是的,也许结合 ORM 来减少这种简单情况的工作量。
    • ORM 有缺点(Object-relational impedance mismatchThe Vietnam of Computer Science)。对于连接设置列表等简单数据,我建议您将自己限制为序列化。
    • 感谢您的提示,但此声明的最新程度如何。讲座列表基于 2006 年及更早的研究。
    • 我不知道有任何 ORM 可以解决这个问题(这不太可能,因为对象和关系是完全不同的概念;任何能很好地映射到关系数据库的东西都不能是基于对象的)。
    【解决方案2】:

    我建议您使用Gson。本质上,Gson 将创建一个 XML 文件,其中包含您需要的信息。然后将使用 Gson 保存和加载该文件。

    您可以创建一个或多个对象来表示您要存储的数据。这是一个例子:

    public interface IConnectionSettings
    {
        enum ConnectionType
        {
            TCP, FTP, Bluetooth
        }
    
        String getServerName();
        String getUserName();
        String getPassword();
    }
    

    【讨论】:

    • 为什么投反对票?请解释一下,如果不正确,我想改进我的答案或将其删除。
    • 这可能是一个不错的选择。一个积极的方面也是能够轻松创建样本数据。
    • @Kinimod 如果答案对您有帮助,请考虑接受。
    猜你喜欢
    • 2012-06-26
    • 2021-10-07
    • 2010-09-19
    • 2015-03-25
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 2014-06-07
    相关资源
    最近更新 更多