zoukankan      html  css  js  c++  java
  • Android Room 学习(一)

    Room简介

    Room persistence库为SQLite提供了一个抽象层,以便在利用SQLite的全部功能的同时实现更强大的数据库访问。

    该库可帮助您在运行应用程序的设备上创建应用程序数据的缓存。 此缓存作为应用程序的唯一事实来源,允许用户在应用程序中查看关键信息的一致副本,无论用户是否具有Internet连接。

    gradle中添加引用

    在module的gradle中加入

    implementation "android.arch.persistence.room:runtime:$rootProject.roomVersion"
        kapt "android.arch.persistence.room:compiler:$rootProject.roomVersion"
    

    在project的gradle中加入

    ext {
        supportLibraryVersion = '27.1.1'
        roomVersion = "1.0.0"
    }
    

    数据库读写线程管理

    因为数据库操作是耗时操作,所以不能放入主线程中,所以增加线程管理代码

    open class AppExecutors constructor(
            val diskIO: Executor = DiskIOThreadExecutor(),
            val networkIO: Executor = Executors.newFixedThreadPool(THREAD_COUNT),
            val mainThread: Executor = MainThreadExecutor()
    ) {
        fun diskIO(): Executor {
            return diskIO
        }
    
        private class MainThreadExecutor : Executor {
            private val mainThreadHandler = Handler(Looper.getMainLooper())
    
            override fun execute(command: Runnable) {
                mainThreadHandler.post(command)
            }
        }
    }
    
    class DiskIOThreadExecutor : Executor {
    
        private val diskIO = Executors.newSingleThreadExecutor()
    
        override fun execute(command: Runnable) { diskIO.execute(command) }
    }
    

    建立数据类

    @Entity(tableName = "persontable")
    data class PersonBean @JvmOverloads constructor(
            /**
             * 姓名
             */
            @ColumnInfo(name = "name") var name: String,
            /**
             * 性别
             */
            @ColumnInfo(name = "sex") var sex: Int,
            /**
             * 年龄
             */
            @ColumnInfo(name = "age") var age: Int
    ) {
        /**
         * 主键
         */
        @PrimaryKey(autoGenerate = true)
        @ColumnInfo(name = "id")
        var id: Int? = null
        /**
         * 描述
         */
        @ColumnInfo(name = "description")
        var description: String? = ""
    }
    

    这里包括了表名,不能为空的字段可以放在数据类的构造函数中,主键和其他可以为空的字段放在外面。

  • 相关阅读:
    PHP入门03 -- 数组与数据结构
    PHP入门02 -- 函数
    PHP入门01 -- 基本语法
    node文章
    Mongodb08
    Mongodb07
    ISO处理jq事件
    map
    Django自定义模板
    JS this指向
  • 原文地址:https://www.cnblogs.com/xl-phoenix/p/9503688.html
Copyright © 2011-2022 走看看