Конфликт доступа к базе данных sqlite android, из сервиса и по клику

В моем приложении Android я могу получить доступ к своей базе данных sqlite из:

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

предложено вКак проверить, работает ли сервис на 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)

Ответы на вопрос(1)

Ваш ответ на вопрос