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