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 ...
随机推荐
- windows mysql 的myini
地址 :C:\ProgramData\MySQL\MySQL Server 5.7
- 利用htmlparser读取html文档的内容
1.添加相关的的jar htmlparser-2.1.jar 2.方法和代码 public static String readHtml(File html) { String htmlPath = ...
- getfacl语法2
一.setfacl——设定文件访问控制列表语法: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ... -m, --modify=acl 更改文件的访问控制 ...
- tail语法
本文介绍Linux下tail命令的使用方法.linux tail命令用途是依照要求将指定的文件的最后部分输出到标准设备,通常是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,假设该档案有更新 ...
- ckeditor_学习(1) 基本使用
ckeditor 是一款强大的web编辑器.工作需要用到记录学习和使用过程,版本是ckeditor4. 1.下载ckeditor的安装包,建议下载标准版的. j将ckeditor.js 引入页面,调用 ...
- 百度前端代码规范:HTML
HTML 1.代码风格 1.1缩进与换行 [强制] 使用 4 个空格做为一个缩进层级,不允许使用 2 个空格 或 tab 字符. <style> ul { padding:; } < ...
- Js高级 事件冒泡
什么叫事件冒泡 当给父子元素的同一事件绑定方法时,触发了子元素身上的事件,执行完毕之后,也会触发父级元素的相同事件,这种传播机制叫事件冒泡. 取消事件冒泡 Event对象有个属性叫cancelBubb ...
- 使用SURF::create()以后报错无法解析
理论上,如果在cmake中勾选了Build_opencv_world.OPENCV_ENABLE_NONFREE以及选择了OPENCV_EXTRA_MODULES_PATH三项后,再编译INSTALL ...
- SpringMVC 的<mvc:resources>使用映射路径展示文件服务器上的图片
<servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springfr ...
- NN 激活函数 待修改
Softmax 函数/算法 https://www.zhihu.com/question/23765351 RELU 激活函数及其他相关的函数 http://blog.csdn.net/u013146 ...