我正在使用Android C2DM开发一个应用程序。 sqlite3是我的后端。一切都工作得很好,但我对sqlite3的性能问题感到震惊。所以我的问题是'我可以将数据库代码放在只执行一次的地方,即dvm(dalvik vertiual machine)应该只执行一次与db有关的代码;在连续运行期间,dvm不应该通过(db)代码,因为已经创建了db。
更具体地说,我的应用程序将msg发送到拥有我的应用程序的所有手机。所以当客户端的应用程序收到一个消息时,dvm不应该执行这个代码: SQLiteDatabase db;
//use tat ref to open or create a table
db = openOrCreateDatabase( "/data/data/de.vogella.android.c2dm.simpleclient/app_database/file__0/0000000000000001.db", SQLiteDatabase.CREATE_IF_NECESSARY, null);
try
{
//initialsiging a query with all the table fields
final String CREATE_TABLE_CONTAIN = "CREATE TABLE IF NOT EXISTS tbl_Message4("
+ "id INTEGER PRIMARY KEY AUTOINCREMENT,"
+ "msg TEXT not null,"
+ "msg_time INTEGER not null,"
+ "msg_status INTEGER not null);";
//execute the above query
db.execSQL(CREATE_TABLE_CONTAIN);
因为每次msg到来时都会执行此代码。所以我想避免这种情况,我想我已经传达了我的信息。任何帮助将不胜感激。
谢谢,
TheIlliterate
答案 0 :(得分:0)
您要问的是正常(和首选)用例。
Android有几个类和方法可以做到这一点。
您基本上创建了一个帮助程序类来管理数据库,它将在其中包含一个扩展SQLiteOpenHelper的类,因为您可以覆盖onCreate和onUpgrade方法来处理数据库的创建和升级。然后创建其他方法(在辅助类中但在SQLiteOpenHelper扩展类之外)以处理与辅助类中的DB相关的所有函数(例如添加/删除/更新记录)是正常的。
有几个示例和教程浮动。一个好的是here。
祝你好运