API 23 cihazında Android Room kitaplığı kullanılırken "Geri alınamıyor - hiçbir işlem etkin değil (kod 1)"

oy
48

Room kütüphanesini kullanarak bir API 23 cihazında uygulamamı çalıştırdığımda bu hatayı alıyorum. İlk açılışta olur, ancak uygulamadaki tanıtımımı geçemiyorum çünkü her seferinde oluyor.

Fatal Exception: android.database.sqlite.SQLiteException: cannot rollback - no transaction is active (code 1)
       at android.database.sqlite.SQLiteConnection.nativeExecute(SQLiteConnection.java)
       at android.database.sqlite.SQLiteConnection.execute(SQLiteConnection.java:553)
       at android.database.sqlite.SQLiteSession.endTransactionUnchecked(SQLiteSession.java:439)
       at android.database.sqlite.SQLiteSession.endTransaction(SQLiteSession.java:401)
       at android.database.sqlite.SQLiteDatabase.endTransaction(SQLiteDatabase.java:522)
       at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:262)
       at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)
       at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableSupportDatabase(FrameworkSQLiteOpenHelper.java:92)
       at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase(FrameworkSQLiteOpenHelper.java:53)
       at androidx.room.SQLiteCopyOpenHelper.getWritableDatabase(SQLiteCopyOpenHelper.java:90)
       at androidx.room.RoomDatabase.inTransaction(RoomDatabase.java:476)
       at androidx.room.RoomDatabase.assertNotSuspendingTransaction(RoomDatabase.java:281)
       at com.diamonddevelopment.cardapp.data.CardMasterDao_Impl.getAllTags(CardMasterDao_Impl.java:1381)
       at com.diamonddevelopment.cardapp.data.AppRepository.getAllTags(AppRepository.kt:158)
       at com.diamonddevelopment.cardapp.activities.MainActivity$Companion$loadTags$1.run(MainActivity.kt:316)
       at java.lang.Thread.run(Thread.java:818)

Bu, API 24 ve üstünde gerçekleşmez. Bu bir hata mı? Oda veri tabanımı şu şekilde oluşturuyorum:

fun getAppDatabase(context: Context): CardMasterDatabase? {
            if (INSTANCE == null) {
                INSTANCE = Room.databaseBuilder(context.applicationContext, CardMasterDatabase::class.java, FILE_NAME).createFromAsset(databases/$FILE_NAME).build()
            }
            return INSTANCE
        }

Ve nasıl kullanırım:

 private var cardMasterDao: CardMasterDao? = null

    init {
        cardMasterDao = when {
            CardMasterDatabase.INSTANCE != null -> {
                CardMasterDatabase.INSTANCE!!.cardMasterDao()
            }
            else -> {
                CardMasterDatabase.getAppDatabase(context)!!.cardMasterDao()
            }
        }
    }
Oluştur 18/05/2020 saat 07:45
kaynak kullanıcı
Diğer dillerde...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more