# MvvmDemo
**Repository Path**: DashYagi/MvvmDemo
## Basic Information
- **Project Name**: MvvmDemo
- **Description**: mvvm:(1)databinding+vm+livedata+room(recyclerView) (2)workmanagerj基础用法
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-04-22
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 框架学习
## dataBinding使用
<1>配置:
(1)build.gradle配置:
android {
......
dataBinding{
enabled = true
}
}
kapt {
generateStubs = true
}
(2)使用最新的androidx包
<2> 布局基本写法:
(1) xml布局自动转换成databinding布局:option+会车->convert to databinding layout.
layout标签:将原布局包裹了起来
data标签:用于声明要用到的变量以及变量类型,它搭建了 View 和 Model 之间的通道。
一些特殊说明:
(1-1)如果对象类型要多处用到,也可以直接将之 import 进来,这样就不用每次都指明整个包名路径了:
(1-2)import系统类,比如 import 集合 list: <需要被替换成<
(1-3) 如果存在 import 的类名相同的情况,可以使用 alias 指定别名:
(2)Activity:
import androidx.appcompat.app.AppCompatActivity
import xxx.xxx.xxx.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(ActivityMainBinding.inflate(layoutInflater, null, false).root)
}
}
(3)Fragment绑定:
private lateinit var binding: FragmentTestBinding
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentTestBinding.inflate(layoutInflater, container, false)
binding.lifecycleOwner = viewLifecycleOwner
binding.executePendingBindings()//用该绑定时立即强制框架执行它到目前为止在绑定上需要做的所有事情.
return binding.root
}
(4)recyclerView中使用:
<3> 单向绑定,更新数据时更新布局:
<4> 双向绑定两种方式:
(4-1)@Bindable+MutableLiveData(),在xml中绑定该属性: android:text="@={mMainViewModel.mName}",即可双向绑定
<5>注解分析:
BindingAdapter:
将一些数据绑定的重复逻辑抽离到BindingAdapter
在自定义BindingAdapter时,尽量对值进行一些必要的判断,以减少View的重新测量与重绘
在BindingAdapter中拦截没用的数据来优化View更新
## JetPack-ROOM学习
Room,必须要了解最基础的三个概念:
Entity:实体类,对应的是数据库的一张表结构。需要使用注解 @Entity 标记。
Dao:包含访问一系列访问数据库的方法。需要使用注解 @Dao 标记。
Database:数据库持有者,作为与应用持久化相关数据的底层连接的主要接入点。需要使用注解 @Database 标记。
## Jetpack - 使用 WorkManager 管理后台任务
https://www.jianshu.com/p/e495ee6e84de