问题:db不会偶尔在稀有设备上打开。
我有一个后台service.class和一些UI类。两者都打开db:
String ppp1=getDatabasePath("myproject.db").getAbsolutePath();
db = SQLiteDatabase.openDatabase(ppp1, null, SQLiteDatabase.OPEN_READWRITE);
该服务在循环(线程)中进行查询和更新,例如:
Cursor c1;
String q1 = "select uid from logs where type!=2";
c1 = db.rawQuery(q1, null);
allLogsCount += c1.getCount();
c1.close();
问题:有时onCreate()的UI类无法打开db,错误也不同:
android.database.sqlite.SQLiteException: Failed to change locale for db /data/data/com.myproject.android/databases/myproject.db to en_US .
或
java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteDatabase: /data/user/0/com.myproject.android/databases/myproject.db
或只是
android.database.sqlite.SQLiteDatabaseLockedException: database is locked (code 5)
服务不是在单独的过程中运行。没有未关闭的游标,我查了一下。它只发生在一台设备上 - 松下ToughPad FZ-X1(SDK 17)
我做错了什么?