0

我需要识别我的应用程序或活动的首次启动。

此时我需要从服务器创建本地数据库中获取一些信息并将信息保存到其中。做这个的最好方式是什么?

  1. 例如,创建任何首选项FirstLaunch并将true\设置false为它。
  2. 检查我的数据库是否存在。
  3. 还有什么?

PS。所有服务器调用必须在一个事务中。Ormlite 支持交易吗?谢谢。

4

4 回答 4

3

对于“在第一次运行时创建数据库”的目的,您应该使用一个SQLiteOpenHelper,它为您提供在以下情况下调用的onCreate()- 方法:

[...] 数据库是第一次创建。

将为您创建数据库文件本身(您不必手动执行此操作)。在此方法中,您可以执行诸如使用标准条目填充数据库之类的操作。


如果您想使用从服务器获得的信息填充数据库,则在没有可用的 Internet 连接时可能会出现问题。

在这种情况下,我会检查是否有可用的连接:

  • 如果有,请获取您的信息。
  • 如果没有,请显示 Toast 或其他通知以通知用户。

要确定您的数据库是否已填充标准条目,您可以使用同样由SQLiteDatabase-class 提供的数据库版本:

  • 当您第一次创建数据库对象时,您调用 SQLiteOpenHelpers 构造函数并将其0作为数据库版本传递。
  • 如果您成功填充了数据库,则使用 setVersion()-method 将其更改为1.
  • 稍后在打开数据库时调用的onOpen()-method中,您可以使用getVersion()-method检查数据库是否已填充。
    • 如果已填充,则调用超级方法将其打开。
    • 如果没有,请尝试填充它。

此外,无论如何都应该从主线程中调用getReadableDatabase()/ -方法,因为:getWritableDatabase()

数据库升级可能需要很长时间,您不应该从应用程序主线程调用此方法,包括从 ContentProvider.onCreate()。

因此,从 Internet 获取信息可以在-onCreate()和 - 方法中进行onOpen()(如果第一次尝试不成功)。您可以(例如)使用服务来执行此操作。

于 2011-08-24T11:10:27.920 回答
1

如果你想用数据库解决这个问题:使用 MyDatabasaVersion 表创建数据库并将你的版本存储在一行中,例如 db_version 默认值为 0。第一次应用程序启动时检查 db_version 如果为 0,则需要启动同步,完成后将 db_version 设置为 1。

于 2011-08-24T11:10:30.063 回答
0

最简单的方法应该是共享偏好。您可以在应用程序上下文的任何地方调用它,并且可以将布尔值放入其中。

是所有Android存储。

于 2011-08-24T11:08:44.577 回答
0

你应该尝试第一个选项Create any preferences for example FirstLaunch and set true \ false to it.

于 2011-08-24T11:09:08.200 回答