我需要识别我的应用程序或活动的首次启动。
此时我需要从服务器创建本地数据库中获取一些信息并将信息保存到其中。做这个的最好方式是什么?
- 例如,创建任何首选项
FirstLaunch
并将true
\设置false
为它。 - 检查我的数据库是否存在。
- 还有什么?
PS。所有服务器调用必须在一个事务中。Ormlite 支持交易吗?谢谢。
对于“在第一次运行时创建数据库”的目的,您应该使用一个SQLiteOpenHelper
,它为您提供在以下情况下调用的onCreate()
- 方法:
[...] 数据库是第一次创建。
将为您创建数据库文件本身(您不必手动执行此操作)。在此方法中,您可以执行诸如使用标准条目填充数据库之类的操作。
如果您想使用从服务器获得的信息填充数据库,则在没有可用的 Internet 连接时可能会出现问题。
在这种情况下,我会检查是否有可用的连接:
要确定您的数据库是否已填充标准条目,您可以使用同样由SQLiteDatabase
-class 提供的数据库版本:
SQLiteOpenHelper
s 构造函数并将其0
作为数据库版本传递。setVersion()
-method 将其更改为1
.onOpen()
-method中,您可以使用getVersion()
-method检查数据库是否已填充。
此外,无论如何都应该从主线程中调用getReadableDatabase()
/ -方法,因为:getWritableDatabase()
数据库升级可能需要很长时间,您不应该从应用程序主线程调用此方法,包括从 ContentProvider.onCreate()。
因此,从 Internet 获取信息可以在-onCreate()
和 - 方法中进行onOpen()
(如果第一次尝试不成功)。您可以(例如)使用服务来执行此操作。
如果你想用数据库解决这个问题:使用 MyDatabasaVersion 表创建数据库并将你的版本存储在一行中,例如 db_version 默认值为 0。第一次应用程序启动时检查 db_version 如果为 0,则需要启动同步,完成后将 db_version 设置为 1。
最简单的方法应该是共享偏好。您可以在应用程序上下文的任何地方调用它,并且可以将布尔值放入其中。
这是所有Android存储。
你应该尝试第一个选项Create any preferences for example FirstLaunch and set true \ false to it.