av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Android kotlin+協(xié)程+Room數(shù)據(jù)庫(kù)的簡(jiǎn)單使用

瀏覽:3日期:2022-09-21 10:32:06

Room

Room是Google為了簡(jiǎn)化舊版的SQLite操作專門(mén)提供的1.擁有了SQLite的所有操作功能2.使用簡(jiǎn)單(類似于Retrofit),通過(guò)注解的方式實(shí)現(xiàn)相關(guān)功能。編譯時(shí)自動(dòng)生成實(shí)現(xiàn)類impl3.LiveData,LifeCycle,Paging天然融合支持

導(dǎo)入

...plugins { id ’com.android.application’ id ’kotlin-android’ id ’kotlin-android-extensions’ id ’kotlin-kapt’}dependencies { //room數(shù)據(jù)庫(kù) implementation 'androidx.room:room-runtime:2.2.5' kapt 'androidx.room:room-compiler:2.2.5' // Kotlin 使用 kapt implementation 'androidx.room:room-ktx:2.2.5'//Coroutines support for Room 協(xié)程操作庫(kù) //lifecycle implementation ’androidx.lifecycle:lifecycle-extensions:2.2.0’ implementation ’androidx.lifecycle:lifecycle-runtime-ktx:2.2.0’}

User

package com.zhangyu.myroom.dataimport android.os.Parcelableimport androidx.room.Entityimport androidx.room.PrimaryKeyimport kotlinx.android.parcel.Parcelize@Parcelize@Entity(tableName = 'User')data class User( @PrimaryKey var id: String, var name: String) : Parcelable

UserDao

package com.zhangyu.myroom.dataimport androidx.room.*@Daointerface UserDao { @Insert(onConflict = OnConflictStrategy.REPLACE) fun putUser(cacheBean: User) @Query('select * from User where id =:id') suspend fun getUser(id: String): User? @Query('select * from User') suspend fun getAllUser(): List<User>? @Delete fun delete(user: User) @Update(onConflict = OnConflictStrategy.REPLACE) fun update(user: User)}

UserDatabase

package com.zhangyu.myroom.dataimport android.util.Logimport androidx.room.Databaseimport androidx.room.Roomimport androidx.room.RoomDatabaseimport androidx.sqlite.db.SupportSQLiteDatabaseimport com.zhangyu.myroom.Appprivate const val TAG = 'CacheDataBase'//后續(xù)的數(shù)據(jù)庫(kù)升級(jí)是根據(jù)這個(gè)version來(lái)比較的,exportSchema導(dǎo)出架構(gòu)@Database(entities = [User::class], version = 1, exportSchema = false)abstract class UserDatabase : RoomDatabase() { companion object { var dataBase: UserDatabase init { //如果databaseBuilder改為inMemoryDatabaseBuilder則創(chuàng)建一個(gè)內(nèi)存數(shù)據(jù)庫(kù)(進(jìn)程銷(xiāo)毀后,數(shù)據(jù)丟失) dataBase = Room.databaseBuilder(App.context, UserDatabase::class.java, 'db_user')//是否允許在主線程進(jìn)行查詢.allowMainThreadQueries()//數(shù)據(jù)庫(kù)創(chuàng)建和打開(kāi)后的回調(diào),可以重寫(xiě)其中的方法.addCallback(object : Callback() { override fun onCreate(db: SupportSQLiteDatabase) { super.onCreate(db) Log.d(TAG, 'onCreate: db_user') }})//數(shù)據(jù)庫(kù)升級(jí)異常之后的回滾.fallbackToDestructiveMigration().build() } } abstract fun getUserDao(): UserDao}

MainActivity

package com.zhangyu.myroomimport android.os.Bundleimport android.util.Logimport androidx.appcompat.app.AppCompatActivityimport androidx.lifecycle.lifecycleScopeimport com.zhangyu.myroom.data.Userimport com.zhangyu.myroom.data.UserDatabaseimport kotlinx.coroutines.launchprivate const val TAG = 'MainActivity'class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) testCache() } private fun testCache() { val userDao = UserDatabase.dataBase.getUserDao() userDao.putUser(User('1001', 'zhangyu')) userDao.putUser(User('1002', 'liming')) lifecycleScope.launch { val users = userDao.getAllUser() Log.e(TAG, 'users: $users') val user = userDao.getUser('1001') Log.e(TAG, 'user: $user') Log.e(TAG, 'testCache: 協(xié)程執(zhí)行完畢') } Log.e(TAG, 'testCache: ') }}

結(jié)果

E/MainActivity: testCache: E/MainActivity: users: [User(id=1001, name=zhangyu), User(id=1002, name=liming)]E/MainActivity: user: User(id=1001, name=zhangyu)E/MainActivity: testCache: 協(xié)程執(zhí)行完畢

到此這篇關(guān)于Android kotlin+協(xié)程+Room數(shù)據(jù)庫(kù)的簡(jiǎn)單使用的文章就介紹到這了,更多相關(guān)Android kotlin協(xié)程使用內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Android
相關(guān)文章:
主站蜘蛛池模板: 青青草这里只有精品 | 中文字幕 亚洲一区 | 97综合在线 | 国产视频久久久 | 欧美视频 亚洲视频 | 亚洲一区二区av | 国产免费一区二区三区免费视频 | 欧美一级片在线看 | 久久综合伊人一区二区三 | 久草视频网站 | 亚洲在线一区二区 | 欧美日韩不卡合集视频 | av中文网 | 精品国产一区二区三区性色av | 精品国产乱码久久久久久中文 | 国产日韩欧美精品一区二区三区 | 91九色婷婷 | 日本色综合 | 色小姐综合网 | 精品免费 | 日韩中出| julia中文字幕久久一区二区 | 日韩一二三区视频 | 国产欧美精品一区二区 | 色综合网站 | 日本黄色激情视频 | 国产成人精品一区二区三区四区 | 欧美日韩国产高清 | 亚洲一区二区电影网 | 久久狼人天堂 | 久久手机视频 | 国产免费视频 | 亚洲午夜精品一区二区三区他趣 | 99re6在线视频 | 另类亚洲视频 | 亚洲一区二区三区免费在线观看 | 国产精品成人国产乱一区 | 国产精品亚洲精品 | 国产大片黄色 | 日韩欧美一级精品久久 | 欧美精品久久久 |