【发布时间】:2014-10-04 18:27:48
【问题描述】:
我正在创建一个 Android 应用,我需要为其创建一个 SQLite DB 并使用一些值预填充它。
Android 文档说明了在 SQLiteOpenHelper 的“onCreate”中要做什么:
第一次创建数据库时调用。这就是表的创建和表的初始填充应该发生的地方。
我对以下两件事持怀疑态度-
-
“第一次创建数据库时”是什么意思?这是在第一次启动应用程序时完成还是仅在第一个数据库请求(读/写等)完成时完成。
如果是后者,我担心创建数据库可能需要相当长的时间,用值预先填充它(我有大约 60 行要插入到 1 个表中),然后读取数据库以显示它。这是最佳做法吗?
-
我一直在 AsyncTasks 中进行所有数据库操作。但我正在使用“db.execSQL”语句在 onCreate 中创建表。这很好(就约定/性能而言)还是我也应该在这里进行 AsyncTask ?
感谢任何帮助。
【问题讨论】:
-
“第一次创建数据库时”是什么意思?这是在第一次启动应用程序时完成还是仅在第一次数据库请求(读/写等)完成时完成。 " -- 当你在
SQLiteOpenHelper上调用getReadableDatabase()或getWriteableDatabase()并且数据库文件不存在时。 -
好的.. 但在这种情况下,这不会影响性能吗?或者,我应该使用预填充的数据库发布应用程序吗?这似乎是一项相当棘手的任务,我想我想避免它。
-
"不会影响性能吗?" -- 好吧,您必须有时打开数据库。 “或者,我应该使用预填充的数据库发布应用程序吗?”——哦,如果这是您的用例的一个选项,我肯定会这样做,using
SQLiteAssetHelper。“这似乎是一项相当棘手的任务,我我想避免它”——这并不难,恕我直言。 -
谢谢!将尝试 SQLiteAssetHelper
标签: android performance sqlite sqliteopenhelper