Konflikt dostępu do androidowej bazy danych sqlite, z Service i onClick

W mojej aplikacji na Androida mogę uzyskać dostęp do mojej bazy danych sqlite z:

1) Usługa Android, co 60 sekund.

2) Po naciśnięciu przycisku (onclik)

Jeśli nacisnę przycisk, gdy moja usługa uzyskuje dostęp do bazy danych, wystąpi błąd.

Tak więc wstawiam do onclickListener, przed dostępem do bazy danych, wywołanie stopService ()

ale konflikt pozostaje, ponieważ nawet jeśli wywołam stopService () przed dostępem do bazy danych, usługa zostanie zatrzymana po tym!

Próbowałem, używając:

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;
 }

zasugerowano wJak sprawdzić, czy usługa działa na Androidzie?

Próbowałem wywołać tę metodę przed dostępem do bazy danych w ten sposób:

    while(isMyServiceRunning())
    {
        // do nothing
    }

    // *** access to my database ***

Co mogę zrobić, aby mieć pewność, że moja usługa zostanie zatrzymana przed uzyskaniem dostępu do bazy danych?

Błąd jest:

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)

questionAnswers(1)

yourAnswerToTheQuestion