【问题标题】:Where to put code for Sample data in Android?在 Android 中将示例数据的代码放在哪里?
【发布时间】:2016-01-14 13:27:43
【问题描述】:

我已经构建了一个 android 应用程序,我在其中调用方法 insertSampleData() 来自主要活动的onCreate() 方法。

问题是每次启动应用程序时都会调用onCreate()方法, 这导致我的数据库中填充了大量的样本数据。

我只想在安装应用程序时提供一次示例数据。谁能告诉我该怎么做?非常感谢!

P.S:insertSampleData() 方法用于将样本数据插入 Sql-lite 数据库。

【问题讨论】:

  • 以下所有答案#Perfect

标签: android sqlite android-sqlite


【解决方案1】:

两种方法:

  • 如果数据已插入一次(例如插入 SharedPreferences),则保存
  • 或者在添加之前检查您的数据库中是否已经有任何示例数据(但如果用户可以擦除数据可能会导致问题)

【讨论】:

    【解决方案2】:

    你可以在你的Application 类中创建一个检查,在它的onCreate() 中类似于这个:

    SharedPreferences preferences = getSharedPreferences("prefs", Context.MODE_PRIVATE);
    boolean firstRun = preferences.getBoolean("firstRun", false);
    if(firstRun) {
        insertSampleData();
        SharedPreferences.Editor editor = preferences.edit();
        editor.putBoolean("firstRun", true);
        editor.commit();
    }
    

    【讨论】:

      【解决方案3】:

      虽然其他答案是正确的,但有一种内置方法可以实现您想要的:SqliteOpenHelperonCreateonUpgrade 方法。

      1. 关于 onCreate() 和 onUpgrade()

      onCreate(..) 在新安装应用程序时调用。 每当应用程序升级和启动时调用 onUpgrade 并且 数据库版本不一样。

      写在这里:https://stackoverflow.com/a/8133640/5349594

      我要补充一点,如果您使用一些 orm 库,它们中的大多数都支持类似的东西。

      【讨论】:

        【解决方案4】:

        在您的 insertSampleData() 方法中,插入数据之前,检查您的表中的行数。
        如果是0,执行INSERTs。
        不需要else 语句:继续退出。

        注意:如果没有找到,样本数据将在下次运行时重新插入。
        因为insertSampleData()onCreate() 中被调用。
        如果没有找到数据,它插入示例数据。
        因此,表格在开始时永远不会为空。

        【讨论】:

        • 看起来像完美的逻辑。 #先生
        • 谢谢您,先生。如果用户在第一次运行后以某种方式将其删除,这可以确保重新插入数据。
        • 但如果用户可以擦除数据可能会导致问题
        • 没有。因为如果没有找到,数据将在下次运行时重新插入。
        • 但我不想重新插入数据。不过还是谢谢支持!!
        【解决方案5】:

        正如 Hrundi 在 cmets 中所说,您可以使用 if 语句,但可能更好的选择是使用自定义 DatabaseHelper 类扩展 SQLiteOpenHelper

        SQLiteOpenHelper 内部有onCreate 方法,该方法在第一次创建数据库时被调用。这就是表的创建和表的初始填充应该发生的地方。

        你可以google这个,你会发现很多例子。

        【讨论】:

          猜你喜欢
          • 2014-11-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-09-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多