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? = ""
}
这里包括了表名,不能为空的字段可以放在数据类的构造函数中,主键和其他可以为空的字段放在外面。
Android Room 学习(一)的更多相关文章
- Android开发学习之路-RecyclerView滑动删除和拖动排序
Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...
- Android开发学习路线图
Android开发学习方法: Android是一个比较庞大的体系,从底层的Linux内核到上层的应用层,各部分的内容跨度也比较大.因此,一个好的学习方法对我们学习Android开发很重要. 在此建议, ...
- Android动画学习(二)——Tween Animation
前两天写过一篇Android动画学习的概述,大致的划分了下Android Animation的主要分类,没有看过的同学请移步:Android动画学习(一)——Android动画系统框架简介.今天接着来 ...
- Android自动化学习笔记:编写MonkeyRunner脚本的几种方式
---------------------------------------------------------------------------------------------------- ...
- Android自动化学习笔记之MonkeyRunner:官方介绍和简单实例
---------------------------------------------------------------------------------------------------- ...
- android开发学习笔记000
使用书籍:<疯狂android讲义>——李刚著,2011年7月出版 虽然现在已2014,可我挑来跳去,还是以这本书开始我的android之旅吧. “疯狂源自梦想,技术成就辉煌.” 让我这个 ...
- Android Animation学习(六) View Animation介绍
Android Animation学习(六) View Animation介绍 View Animation View animation系统可以用来执行View上的Tween animation和F ...
- Android Animation学习(五) ApiDemos解析:容器布局动画 LayoutTransition
Android Animation学习(五) ApiDemos解析:容器布局动画 LayoutTransition Property animation系统还提供了对ViewGroup中的View改变 ...
- Android Animation学习(四) ApiDemos解析:多属性动画
Android Animation学习(四) ApiDemos解析:多属性动画 如果想同时改变多个属性,根据前面所学的,比较显而易见的一种思路是构造多个对象Animator , ( Animator可 ...
- Android Animation学习(三) ApiDemos解析:XML动画文件的使用
Android Animation学习(三) ApiDemos解析:XML动画文件的使用 可以用XML文件来定义Animation. 文件必须有一个唯一的根节点: <set>, <o ...
随机推荐
- firstPage
自己写的科比的一个简单介绍的网页,画面,布局还是太垃圾了,图片放大缩小标签不知道,简直难受. <!DOCTYPE html><html> <head> <me ...
- JAVA学习笔记系列4-Eclipse版本选择
下载Eclipse需要根据安装的JDK的版本来决定是安装32位还是64位,不是根据操作系统选的.
- linux日常命令之一
zcat Linux中,cat命令可查看文本内容: 对于压缩包内的文本,可使用zcat命令,在不解压的情况下查看文本内容: iconv file -i 可查看文件字符集: iconv为字符集转换命令, ...
- Java第三次作业——面向对象基础(封装)
Java第三次作业--面向对象基础(封装) (一)学习总结 1.什么是面向对象的封装性,Java中是如何实现封装性的?试举例说明. 封装性 封装性是面向对象的方法所应遵循的一个重要原则,它有两个含义: ...
- 解决eclipse高版本JDK编译的项目到低版本JDK服务器上不能运行的问题
错误提示信息:Unsupported major.minor version 52.0,意思是说,当前jdk的版本不支持更高版本jdk编译出来的class文件. 我的编译环境,eclipse使用的是j ...
- js layer.js
var index = parent.layer.getFrameIndex(window.name); parent.layer.close(index); 关闭弹出页 全屏弹出页面 layer.o ...
- Tarjan求割点&桥
概念 1.桥:是存在于无向图中的这样的一条边,如果去掉这一条边,那么整张无向图会分为两部分,这样的一条边称为桥无向连通图中,如果删除某边后,图变成不连通,则称该边为桥. 2.割点:无向连通图中,如果删 ...
- 【java多线程】队列系统之DelayQueue源码
一.延迟队列 延迟队列,底层依赖了优先级队列PriorityBlockingQueue 二.延迟队列案例 (1)延迟队列的任务 public class DelayTask implements De ...
- Docker进入容器后使用ifconfig等命令“command not found”解决办法
当进入一个容器后,使用ifconfig.ip addr等命令时,出现如下“command not found”: 解决办法: yum update yum -y install n ...
- Eslint 能自动格式化代码,为什么还要用 Prettier?
ESLint 与 Prettier 区别: ESLint:代码检测工具:可以检测出你代码中潜在的问题,比如使用了某个变量却忘记了定义: Prettier:代码格式化工具:作为代码格式化工具,能够统一你 ...