Я работаю над проектом Android с языком Kotlin и использую базу данных Room из компонентов архитектуры Android.Это все вещи из моей базы данных.Я пытаюсь позволить пользователю сохранять информацию о книге, и она отлично работает, пока я нахожусь в приложении, но при перезапуске приложения все было удалено.Мне нужно хранить данные в памяти, и поэтому я использую inMemoryDatabaseBuilder
, но, похоже, это не работает.Любая помощь приветствуется.
Зависимости:
dependencies {
def room_version = "1.1.1"
implementation "android.arch.persistence.room:runtime:$room_version"
kapt "android.arch.persistence.room:compiler:$room_version"
}
apply plugin: 'kotlin-kapt'
Объект:
@Entity(tableName = "tblBooks")
data class BookData(@PrimaryKey(autoGenerate = true) var id: Long?,
@ColumnInfo(name = "name") var name: String,
@ColumnInfo(name = "author") var author: String,
@ColumnInfo(name = "translator") var translator: String,
@ColumnInfo(name = "publisher") var publisher: String,
@ColumnInfo(name = "publication_year") var publicationYear: Int?,
@ColumnInfo(name = "price") var price: Int?,
@ColumnInfo(name = "description") var description: String,
@ColumnInfo(name = "category") var category: String,
@ColumnInfo(name = "shelf_number") var shelfNumber: Int?,
@ColumnInfo(name = "front_cover") var frontCover: String?,
@ColumnInfo(name = "back_cover") var backCover: String?
){
constructor():this(null, "", "", "", "", 0, 0, "", "",
0, "", "")
}
Дао:
@Dao
interface BookDataDao {
@Query("SELECT * FROM tblBooks")
fun getAll(): List<BookData>
@Insert(onConflict = REPLACE)
fun insert(bookData: BookData)
}
База данных:
@Database(entities = [BookData::class], version = 1)
abstract class BookDatabase: RoomDatabase(){
abstract fun bookDataDao(): BookDataDao
companion object {
private var INSTANCE: BookDatabase? = null
fun getInstance(context: Context): BookDatabase? {
if (INSTANCE == null){
synchronized(BookDatabase::class){
INSTANCE =
Room.inMemoryDatabaseBuilder(context.applicationContext,
BookDatabase::class.java).build()
}
}
return INSTANCE
}
}
}
Использование: вставка данных:
val database = BookDatabase.getInstance(this) !!
database.bookDataDao().insert(bookData)
получение данных:
val database = BookDatabase.getInstance(this) !!
val booksList = database.bookDataDao().getAll()