Gradle abi 分包设置: 打包输出不同名称的apk包:
Gradle abi 分包设置: 打包输出不同名称的apk包:
DataBinding的意义: 让布局文件承担了部分原本属于页面的工作,使页面与布局耦合度进一步降低 DataBinding使用: build.gradle中配置 布局文件:...
LiveData和ViewModel的关系 在ViewModel中的数据发生变化是通知页面image.png当ViewModel数据发生变化通过LiveData通知View数...
ViewModel的诞生: 瞬态数据丢失 异步调用的内存泄漏 类膨胀提高维护难度和测试难度 ViewModel的作用: 它是介于View(视图)和Model(数据模型)之间的...
有人说,人生的很多不顺遂不如意,不是你运气不好,不是你机会不够,不是社会残酷,而是你自己放弃了努力,你想要的生活才会变得离你越来越远。 想想自己,是不是想改变却一直在观望?是...
使用RecyclerView一次性加载100条数据,页面出现卡顿 原布局外部套用了NestedScrollView +LinearLayout 解决方案: RecyclerV...
对于一个创建的协程(通过launch或者async),会返回一个Job实例,该实例是协程的唯一标示,并且负责管理协程的生命周期 一个任务可以包含一系列状态:新创建(New)、...
取消作用域会取消它的子协程。 被取消的子协程并不会影响其余兄弟协程。 协程通过抛出一个特殊的异常CancellationException来处理取消操作。 所有kotlinx...
CoroutineContext是一组用于定义协程行为的元素 Job:控制协程的生命周期 CoroutineDispatcher:向合适的线程分发任务 CoroutineNa...