Android JetPack~LiveData(二) 数据倒灌问题
- Android数据绑定技术一,企业级开发
- Android数据绑定技术二,企业级开发
- Android JetPack~ DataBinding(数据绑定)(一) 集成与使用
- Android JetPack~ LiveData (一) 介绍与使用
- Android JetPack~LiveData(二) 数据倒灌问题
- Android JetPack~ ViewModel (一) 介绍与使用
1、数据倒灌的出现
场景:
如果我们在一个home页面获取网络数据,然后通过LiveData的观察者特性,在回调中跳转B页面,当旋转屏幕时,页面重建,LiveData又发来最后一次数据,那么直接触发了跳转B页面的代码。这就是数据倒灌引起的问题。因为LiveData的数据会保存在内存中。
数据倒灌原因:
private abstract class ObserverWrapper {
final Observer<? super T> mObserver;
boolean mActive;
// 第一处
int mLastVersion = START_VERSION;
}
private void considerNotify(ObserverWrapper observer) {
...
// 第二处
if (observer.mLastVersion >= mVersion) {
return;
}
// 第三处
observer.mLastVersion = mVersion;
observer.mObserver.onChanged((T) mData);
}
倒灌原因小结
注意
解决办法
- 屏幕旋转
- 用户手动切换系统语言
- 如果应用不需要横屏,就设置为永久竖屏。
- 如果当前Activity回到前台LiveData不需要接收最新的数据,可以使用下面三中扩展的LiveData
- 设置android:configChanges="orientation|screenSize",这样普通生命周期就不走了
待续。。。。。
Android JetPack~LiveData(二) 数据倒灌问题的更多相关文章
- Android JetPack~ LiveData (一) 介绍与使用
一般情况下LiveData都是搭配这ViewModel使用,这里先介绍一下LiveData,再结合ViewModel使用 Android数据绑定技术一,企业级开发 Android数据绑定技术二,企业级 ...
- Android JetPack~ DataBinding(数据绑定)(一) 集成与使用
近期将会梳理一下JetPack全家桶的使用,包括DataBinding,Room,ViewModel,LiveData,Navigation等. 本来打算先写DataBinding的使用,没想到在17 ...
- Android JetPack~ ViewModel (一) 介绍与使用
Android数据绑定技术一,企业级开发 Android数据绑定技术二,企业级开发 Android JetPack~ DataBinding(数据绑定)(一) 集成与使用 Android ...
- Android Jetpack 组建介绍(二)——Lifecycler
参考Android Jetpack架构组件之 Lifecycle(源码篇) 源码分析 关于Lifecycle的使用考上一篇文章Android Jetpack框架之 Lifecycles(使用篇),从使 ...
- Android官方架构组件介绍之LiveData(二)
LiveData LiveData是一个用于持有数据并支持数据可被监听(观察).和传统的观察者模式中的被观察者不一样,LiveData是一个生命周期感知组件,因此观察者可以指定某一个LifeCycle ...
- Android Jetpack 架构组件最佳实践之“网抑云”APP
背景 近几年,Android 相关的新技术层出不穷.往往这个技术还没学完,下一个新技术又出来了.很多人都是一脸黑人问号? 不少开发者甚至开始哀嚎:"求求你们别再创造新技术了,我们学不动了!& ...
- 学习Android Jetpack? 入门教程和进阶实战这里全都有!
前言 2018年谷歌I/O,Jetpack横空出世,官方介绍如下: Jetpack 是一套库.工具和指南,可帮助开发者更轻松地编写优质应用.这些组件可帮助您遵循最佳做法.让您摆脱编写样板代码的工作并简 ...
- 带你了解Android Jetpack
1.Jetpack主要特性有以下三点: 1.加速开发组件可单独使用,也可以协同工作,当使用kotlin语言特性时,可以提高效率. 2.消除样板代码Android Jetpack可管理繁琐的Activi ...
- Android学习进度二
在最新的Android开发中,Google已经使用了新的开发技术,即使用Jectpack来开发App.所以今天我主要学习了这方面的知识. Jetpack 是一套库.工具和指南,可帮助开发者更轻松地编写 ...
- Android Jetpack从入门到精通(深度好文,值得收藏)
前言 即学即用Android Jetpack系列Blog的目的是通过学习Android Jetpack完成一个简单的Demo,本文是即学即用Android Jetpack系列Blog的第一篇. 记得去 ...
随机推荐
- linux 部署轻量级堡垒机Next Terminal
对比 类似的开源堡垒机有 Teleport,Jumpserver,Next Terminal等等. Teleport 安全性最好,较轻量,但是对被管理资产不透明,纳管前需要双向认证,在资产设备上需额外 ...
- 使用selemium被反爬解决方法
使用selenium进行自动化的时候,如csdn登录时可能会遇到检测反爬,从而需要验证 1. 反爬 有时候,我们利用 Selenium 自动化爬取某些网站时,极有可能会遭遇反爬. 实际上, ...
- python-实现栈结构
# encoding=utf-8 class Stack(object): """栈""" def __init__(self): &quo ...
- Vue2使用axios,request.js和vue.config.js
1.配置request.js,用来请求数据 import axios from 'axios' // 1:利用axios对象的方法create,创建一个axios实例 // 2:request就是ax ...
- Jx9嵌入式脚本语言基本用法
Jx9是一种嵌入式脚本语言,可用于编写嵌入式脚本和扩展. 以下是一些使用Jx9的示例: 1. 计算器 Jx9可以轻松实现一个计算器.例如: ```print("Enter two numbe ...
- 全球IP whois信息获取与情报挖掘
全球IP的whois信息获取与情报挖掘 什么是whois信息? Whois是一种网络协议,也是一种网络服务,能够让客户端查询域名或者IP是否注册,以及注册人的相关信息.我们通常所说的whois信息就是 ...
- 近期调研和使用 zeromq 与 cppzmq 的一些问题
关于message 消息分片 消息分片的发送 消息分片允许将多个消息封装成一条消息.在发送自定义协议数据时,我们经常需要在消息前"填充"一个包头.如下代码,在发送的时候加上 zmq ...
- Netty ByteBuf 详解
ByteBuf类:Netty的数据容器 ByteBuf 维护了两个不同的索引:① readerIndex:用于读取:② writerIndex:用于写入:起始位置都从0开始:名称以 read或者 w ...
- Windows下解决python pip命令下载慢的方法(超简单)
首先,常用的国内镜像: 1 https://pypi.tuna.tsinghua.edu.cn/simple/ 清华大学(推荐) 2 http://pypi.douban.com/simple/ 豆瓣 ...
- 2020寒假学习笔记12------Python基础语法学习(一)
代码的组织和缩进 Python 语言直接通过缩进来组织 代码块."缩进"成为了 Python 语法强制的规定.缩进时,几个空格都是允许的,但是数目必须统一.我们通常采用" ...