Операции с БД не в основном потоке

94
29 марта 2021, 13:40

Пытаюсь перевести все операции с БД в своем приложении(например операцию удаления данных из БД) в отдельный поток. Для этого я решил сделать переделать соответствующий метод удаления добавив создание и запуск Thread. Но этот метод не работает, удаляя запись только с экрана, но не с БД. Хотя до помещения его в метод run() все работало хорошо. С чем может быть связана проблема?

Метод для удаления записи из класса БД:

class runnableForDeleteOrder implements Runnable{
        SQLiteDatabase sqlDB;
        long idOfDeletingOrder;
        runnableForDeleteOrder(SQLiteDatabase sqlDB,  long idOfDeletingOrder){
            this.sqlDB=sqlDB;
            this.idOfDeletingOrder=idOfDeletingOrder;
        }
        @Override
        public void run() {
            try{
                sqlDB.execSQL("DELETE FROM "+ NAME_OF_CONNECTOR_TABLE +" WHERE "+ IDSH_CONNECTOR_TABLE+"= '"+idOfDeletingOrder+"';");
                sqlDB.execSQL("DELETE FROM "+ NAME_OF_TABLE_ORDERS +" WHERE "+ ID_TABLE_ORDERS+"= '"+idOfDeletingOrder+"';");
            }catch (IllegalStateException e){}}
        }
    void deleteOrder( SQLiteDatabase sqlDB, long idOfDeletingOrder){
        Thread t = new Thread(new runnableForDeleteOrder(sqlDB,idOfDeletingOrder));
        t.start();
    }

Использование метода:

public boolean onContextItemSelected(MenuItem item){
    mDB = new MyDataBase(this);
    sqlDB = mDB.getWritableDatabase();
    long idOfChangeableOrder = Long.parseLong(((TextView)ll.findViewById(R.id.tvId)).getText().toString());
        switch (item.getItemId()){
          case 1:
                mDB.deleteOrder(sqlDB,idOfChangeableOrder);
                llMain.removeView(ll);
                if(llMain.getChildCount() == 0){
                    llMain.addView(getMessageAtEmptyLayout());
                }
                break;
        }
        mDB.close();
        return true;
    }
READ ALSO
Уникальное имя перемены в цикле for Javascript?

Уникальное имя перемены в цикле for Javascript?

использую яндекс карту и что бы можно было добавлять новые маркеры из HTML сделал такой код

102
Выбор кода в соответствии с окружением

Выбор кода в соответствии с окружением

Реакт приложениеНекоторые контейнеры могут получать данные из сети

80
Как показать/скрыть только один параграф?

Как показать/скрыть только один параграф?

Имеется несколько блоков с описанием, которое изначально частично скрытоИмеется кнопка "показать больше"

116
gulp watch вылетает с Error [ERR_STREAM_WRITE_AFTER_END]: write after end

gulp watch вылетает с Error [ERR_STREAM_WRITE_AFTER_END]: write after end

Во всех проектах один и тот же gulpfilejs живёт без изменений уже почти год, всё работало прекрасно и буквально вчера таск gulp watch начал вылетать...

99