2
在我的應用程序的Android,我可以訪問我的SQLite數據庫:衝突訪問SQLite數據庫的Android,從服務和的onClick
1)服務機器人,每60秒。
2)鈕的壓力之後(onclik)
如果我按下按鈕而我的服務正在訪問發生錯誤的數據庫。
所以我插在onclickListener,訪問數據庫之前,要stopService()的調用
但是衝突仍然存在,因爲,即使我進入數據庫之前調用stopService(),該服務被停止後,這個!
我嘗試使用:
private boolean isMyServiceRunning() {
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if ("com.example.MyService".equals(service.service.getClassName())) {
return true;
}
}
return false;
}
在How to check if a service is running on Android?
建議我嘗試調用此方法,訪問數據庫之前,以這種方式:
while(isMyServiceRunning())
{
// do nothing
}
// *** access to my database ***
我能做些什麼爲了確保在訪問數據庫之前我的服務已停止?
的錯誤是:
10-30 21:05:43.360: E/SQLiteDatabase(13960): Failed to open the database. closing it.
10-30 21:05:43.360: E/SQLiteDatabase(13960): android.database.sqlite.SQLiteDatabaseLockedException: database is locked
10-30 21:05:43.360: E/SQLiteDatabase(13960): at android.database.sqlite.SQLiteDatabase.native_setLocale(Native Method)
10-30 21:05:43.360: E/SQLiteDatabase(13960): at android.database.sqlite.SQLiteDatabase.setLocale(SQLiteDatabase.java:2115)
10-30 21:05:43.360: E/SQLiteDatabase(13960): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:984)
10-30 21:05:43.360: E/SQLiteDatabase(13960): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:956)
10-30 21:05:43.360: E/SQLiteDatabase(13960): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:1021)
10-30 21:05:43.360: E/SQLiteDatabase(13960): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:753)
10-30 21:05:43.360: E/SQLiteDatabase(13960): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221)
10-30 21:05:43.360: E/SQLiteDatabase(13960): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:149)
10-30 21:05:43.360: E/SQLiteDatabase(13960): at host.database.DB_DatabaseManager.open(DB_DatabaseManager.java:134)
你可以發佈你面對什麼樣的衝突? 你關閉數據庫在你的服務? –
是的,@Jagdeep,我關閉服務中的數據庫。我編輯我的問題,添加錯誤 – GVillani82