电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

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

Room

Room是Google為了簡(jiǎn)化舊版的SQLite操作專門提供的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)程銷毀后,數(shù)據(jù)丟失) dataBase = Room.databaseBuilder(App.context, UserDatabase::class.java, 'db_user')//是否允許在主線程進(jìn)行查詢.allowMainThreadQueries()//數(shù)據(jù)庫(kù)創(chuàng)建和打開后的回調(diào),可以重寫其中的方法.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)文章:
主站蜘蛛池模板: 防水套管-柔性防水套管-刚性防水套管-上海执品管件有限公司 | 石膏基自流平砂浆厂家-高强石膏基保温隔声自流平-轻质抹灰石膏粉砂浆批发-永康市汇利建设有限公司 | 合金ICP光谱仪(磁性材料,工业废水)-百科 | 成都办公室装修-办公室设计-写字楼装修设计-厂房装修-四川和信建筑装饰工程有限公司 | 浙江皓格药业有限公司| 膏方加工_丸剂贴牌_膏滋代加工_湖北康瑞生物科技有限公司 | _网名词典_网名大全_qq网名_情侣网名_个性网名 | 电竞学校_电子竞技培训学校学院-梦竞未来电竞学校官网 | 砂尘试验箱_淋雨试验房_冰水冲击试验箱_IPX9K淋雨试验箱_广州岳信试验设备有限公司 | 丽陂特官网_手机信号屏蔽器_Wifi信号干扰器厂家_学校考场工厂会议室屏蔽仪 | 维泰克Veertek-锂电池微短路检测_锂电池腐蚀检测_锂电池漏液检测 | 车间除尘设备,VOCs废气处理,工业涂装流水线,伸缩式喷漆房,自动喷砂房,沸石转轮浓缩吸附,机器人喷粉线-山东创杰智慧 | 法兰连接型电磁流量计-蒸汽孔板节流装置流量计-北京凯安达仪器仪表有限公司 | 衬四氟_衬氟储罐_四氟储罐-无锡市氟瑞特防腐科技有限公司 | 硫化罐_蒸汽硫化罐_大型硫化罐-山东鑫泰鑫智能装备有限公司 | 纳米二氧化硅,白炭黑,阴离子乳化剂-臻丽拾科技 | 密封无忧网 _ 专业的密封产品行业信息网 | 新疆系统集成_新疆系统集成公司_系统集成项目-新疆利成科技 | 「钾冰晶石」氟铝酸钾_冰晶石_氟铝酸钠「价格用途」-亚铝氟化物厂家 | 洛阳网站建设_洛阳网站优化_网站建设平台_洛阳香河网络科技有限公司 | 新疆系统集成_新疆系统集成公司_系统集成项目-新疆利成科技 | LCD3D打印机|教育|桌面|光固化|FDM3D打印机|3D打印设备-广州造维科技有限公司 | 南京技嘉环保科技有限公司-杀菌除臭剂|污水|垃圾|厕所|橡胶厂|化工厂|铸造厂除臭剂 | 成都亚克力制品,PVC板,双色板雕刻加工,亚克力门牌,亚克力标牌,水晶字雕刻制作-零贰捌广告 | 隔离变压器-伺服变压器--输入输出电抗器-深圳市德而沃电气有限公司 | 真空包装机-诸城市坤泰食品机械有限公司| 塑胶跑道施工-硅pu篮球场施工-塑胶网球场建造-丙烯酸球场材料厂家-奥茵 | 换链神器官网-友情链接交换、购买交易于一体的站长平台 | 我车网|我关心的汽车资讯_汽车图片_汽车生活! | 学生作文网_中小学生作文大全与写作指导 | 四川成都干燥设备_回转筒干燥机_脉冲除尘器_输送设备_热风炉_成都川工星科机电设备有限公司 | 减速机三参数组合探头|TSM803|壁挂式氧化锆分析仪探头-安徽鹏宸电气有限公司 | 冰雕-冰雪世界-大型冰雕展制作公司-赛北冰雕官网 | 威海防火彩钢板,威海岩棉复合板,威海彩钢瓦-文登区九龙岩棉复合板厂 | 斗式提升机_链式斗提机_带式斗提机厂家无锡市鸿诚输送机械有限公司 | 医养体检包_公卫随访箱_慢病随访包_家签随访包_随访一体机-济南易享医疗科技有限公司 | 电动葫芦-河北悍象起重机械有限公司 | 聚天冬氨酸,亚氨基二琥珀酸四钠,PASP,IDS - 远联化工 | 临沂招聘网_人才市场_招聘信息_求职招聘找工作请认准【马头商标】 | 胶泥瓷砖胶,轻质粉刷石膏,嵌缝石膏厂家,腻子粉批发,永康家德兴,永康市家德兴建材厂 | ALC墙板_ALC轻质隔墙板_隔音防火墙板_轻质隔墙材料-湖北博悦佳 |