首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

开发以太坊安卓钱包系列3 - 资产信息展示

这是如何开发以太坊(安卓)钱包系列第3篇, 钱包账号资产信息展示,展示信息主要包括账号地址、eth余额及该账号所拥有的Token及余额。...我们使用了Google在I/O大会推出的一套遵循MVVM开发模式的LiveData和ViewModel组件架构。...ViewModel 和 LiveData ViewModel 会关注UI生命周期来存储和管理数据,在Activity发生变化(锁屏开屏、旋转)时,ViewModel 会自动保留之前的数据并给新的Activity...ViewModel 还可以用于不同界面间数据共享。 LiveData是一个可观察的数据持有者类。观察者可以方便我们以异步的方式获取数据,同时LiveData也是有生命周期感知的。...显示当前账号 可以分为两个步骤: •从数据库中读取账号;•界面显示账号 TokensViewModel中定义了一个MutableLiveData defaultWallet ,从数据库中读取账号会保存在

1.3K30

【译】LiveData三连

When and why to use Android LiveData 差不多一年前(2017年5月的第一个alpha版本),谷歌发布了 "安卓架构组件",这是一个库的集合,旨在帮助安卓开发人员设计更强大...ProfileController反过来使用ProfileRepository来获取数据,无论是从网络(使用先前在Activity中使用的WebService)还是从其他地方(如内存缓存或持久化)。...例如,在应用程序交叉事件的情况下,事件的源头和事件中的角色之间没有明确的关系。...这意味着我们可以将LiveData对象保存到数据库中,之后再将其作为普通的LiveData进行观察。这让我们可以在代码中的一个地方保存数据,并让另一个地方的代码,观察它数据的改变。...LiveData基本上有两种选择:同步更新或从工作线程发布异步值。

1.7K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    LiveData 还有学习的必要吗?—— Jetpack 系列(2)

    MutableLiveData 提供的接口:setValue() 为同步设置数据,postValue() 为异步设置数据,内部将 post 到主线程再修改数据。...2、Kotlin Flow: Kotlin Flow 是基于 Kotlin 协程基础能力搭建的一套数据流框架,从功能复杂性上看是介于 LiveData 和 RxJava 之间的解决方案。...2.5 LiveData 数据重放原因分析 LiveData 的数据重放问题也叫作数据倒灌、粘性事件,核心源码在 LiveData#considerNotify(Observer) 中: 首先,LiveData...,主要思路是将 LiveData 源码中的 Observer#mLastVersion 和 LiveData#mVersion 在子类中重新实现一遍。...---- 参考资料 LiveData 概览[12] —— 官方文档 重学安卓:吃透 LiveData 本质,享用可靠消息鉴权机制[13] —— KunMinX 著 重学安卓:LiveData 数据倒灌

    3.6K10

    Jetpack--LifeCycle、ViewModel、LiveData

    Jetpack是google官方的安卓开发工具集,目的是为了标准化和加快开发效率,并且之后会持续更新 安卓开发中,google推荐使用MVVM架构,Jetpack集成了构建MVVM架构的几种工具,相比于以前的...可以说你的安卓项目没有升级使用这套架构,那么你的架构就已经过时了 JetPack与AndroidX AndroidX命名空间中包含Jetpack库 AndroidX代替Android Support Library...,当数据发送改变时,观测方能够观测到,并且线程安全,集成了LifeCycle的绑定生命周期特性 1.来实现一个定时器,线程中更新定时时间,使用LiveData使得ui上进行更新 布局文件很简单,一个TextView...} 在Activity中使用ViewModel,并观测LiveData的值,ui线程中使用setValue方法设置LiveData的值,非ui线程使用postValue方法 package com.aruba.livedata...return progress; } } 实现两个fragment中对ViewModel进度值的观察,注意这边获取ViewModel时Owner要用Activity的上下文,因为实现联动需要使用同一个

    1.7K20

    Android从零开始搭建MVVM架构(4)——LiveData

    观察LiveData对象 在大多数情况下,出于以下原因,应用程序组件的onCreate()方法是开始观察LiveData对象的最佳位置: 确保系统不会从Activity或Fragment的onResume...确保Activity或Fragment一旦变为活动状态时,就有可展示的数据。 当应用程序组件处于STARTED状态,它就需从它所观察的LiveData对象中接收到最新的值。...MutableLiveData类暴露公用的setValue(T)和postValue(T)方法,如果需要编辑存储在LiveData对象中的值,必须使用这两个方法。...当更新数据库时,会生成所有必要的代码来更新LiveData对象。 生成的代码在需要时在后台线程上异步运行查询。 这种模式对于保持用户界面中显示的数据与存储在数据库中的数据同步很有用。...例如,如果在UI中有一个从本地数据库或网络获取更新的LiveData对象,则可以将以下数据源添加到MediatorLiveData对象: 与存储在数据库中的数据关联的LiveData对象。

    2.4K30

    “终于懂了“系列:Jetpack AAC完整解析(四)MVVM - Android架构探索!

    逻辑层:为了实现系统功能而进行的必要逻辑。 数据层:数据的获取和存储,含本地、server。 正常的开发流程中,开始写代码之前 都会有架构设计这一过程。这就需要你选择使用何种架构模式了。...仓库层 要做的主要工作是判断调用方请求的数据应该是从本地数据源中获取还是从网络数据源中获取,并将获取到的数据返回给调用方。...另外,注意到暴露的获取LiveData的方法 返回的是LiveData类型,即不可变的,而不是MutableLiveData,好处是避免数据在外部被更改。...: 2021/1/24 从本地数据库获取 } //存入本地数据库 (从服务端获取数据后可以调用) private void saveUsersToLocal(List数据库的更改将触发对活跃 LiveData 对象的回调。数据库会充当单一可信来源。 保留尽可能多的相关数据和最新数据。这样,即使用户的设备处于离线模式,他们也可以使用您应用的功能。

    2.1K20

    MVVM 进阶版:MVI 架构了解一下~

    : [1240] MVC架构主要分为以下几部分 视图层(View):对应于xml布局文件和java代码动态view部分 控制层(Controller):主要负责业务逻辑,在android中由Activity...模型层(Model):主要负责网络请求,数据库处理,I/O的操作,即页面的数据来源 由于android中xml布局的功能性太弱,Activity实际上负责了View层与Controller层两者的工作,...其次就是View层通过调用ViewModel层的方法来交互的,View层与ViewModel的交互比较分散,不成体系 小结一下,在我的使用中,MVVM架构主要有以下不足 为保证对外暴露的LiveData...MVI 与 MVVM 很相似,其借鉴了前端框架的思想,更加强调数据的单向流动和唯一数据源,架构图如下所示 [1240] 其主要分为以下几部分 Model: 与MVVM中的Model不同的是,MVI...但通过以上的分析与介绍,我相信使用MVI架构代替没有使用DataBinding的MVVM是一个比较好的选择~ 相关视频推荐: 【2021最新版】Android studio安装教程+Android(安卓

    2.1K20

    MVVM+数据绑定,让你的Android应用飞起来,MVVM+数据绑定技巧,打造Android应用的数据流水线!

    当数据需要更新时,View会通过数据绑定或接口回调的方式从ViewModel中获取新的数据。 ViewModel是MVVM模式中的关键部分,它充当了Model和View之间的桥梁。...它可以是从网络获取的数据、数据库中的数据或其他数据源。Model层通常是独立于界面的,可以在多个界面之间共享。 职责: 数据存储:包括数据库、文件、网络请求等数据源的管理。...数据同步处理: ViewModel使用LiveData或MutableLiveData来持有和管理与UI相关的数据。...异步数据处理与同步更新 异步数据处理: 在Android开发中,数据加载和更新往往涉及网络请求或数据库操作,这些操作通常比较耗时且应该在后台线程中执行。...Model层负责从网络API获取天气数据,View层负责展示这些数据,而ViewModel层则作为两者的桥梁,处理数据的转换和逻辑。 在实际应用中,我们遇到了数据同步的问题。

    13310

    使用Lifecycle-Aware组件优化项目

    包含以下几个组件模块: lifecycle 处理生命周期,创建一个自动响应生命周期事件的用户界面 LiveData 构建底层数据库更改时通知试图的数据对象(数据驱动界面) ViewModel 存储未在应用旋转中销毁的...UI相关数据 Room 使用应用内对象和编译时检查来访问您的应用的SQLite数据库 Paging 逐步从数据源加载所需的信息 整体结构如下: ?...ViewModel负责View层和Repository层的数据管理; LiveData是一个可以保存数据和观察数据变化的组件; Room通过注解来控制实体和操作数据库 Paging是一个处理数据分页的组件...LiveData的优势: 确保数据源跟UI展示一致——当数据源变化时,LiveData会通知观察者更新UI,前提是组件在激活状态下。...2、在高精度和低精度地理位置之间的切换.使用生命周期感知型的组件能够使用高精度获取地理位置在你的APP可见时候,当你的APP切换到后台的时候使用低精度更新. 3、启动和关闭视频缓冲.使用生命周期感知型组件来打开视频缓冲

    92320

    Android Jetpack系列 之LiveData

    (count); } } LiveData类型的变量我们通过set和get去赋值和取值 现在计数的数字已经是LiveData类型的了,那么我们如何在数据变化的时候通知textView呢 我们只需要在...switchMap 我们上面的例子数据的获取是直接写在Activity中获取的,在真实的项目开发中,这里的数据一般都是从网络请求中或者缓存中获取的,我们来新建HttpUtil来模拟数据的获取: public...原因很简单,因为我们的数据每次从网络中获取 获取到的都是一个新的LiveData对象,所以我们无法监听到数据的变化,那么我们该如何做呢,这个时候switchMap就派上用场了 我们在ViewModel...在实际项目开发中我们使用switchMap的频率还是很高的,毕竟 只要LiveData对象是调用其他方法获取的 ,我们就可以这样做, 在点击事件中我们设置了可观察数据:分数,当分数改变的时候,就会执行switchMap...函数 ,switchMap会将获取的数据转换为可观察的LiveData,所以我们监听这个LiveData对象 就可以观察到数据的变化了。

    1.1K20

    从 Android 开发到读懂源码 第04期:LiveData 源码解析

    作者简介 罗铁锤,六年安卓踩坑经验,致力于底层平台、上层应用等多领域开发。文能静坐弹吉他,武能通宵写代码。...正如注释所说,LiveData 是一个数据持有容器,并且该容器可以感知生命周期的变化,在合适的时机通知观察者数据的变更。...LiveData 是一个抽象类,其子类常用的有 MutableLiveData, MediatorLiveData 和 RoomTrackingLiveData 。...postValue 接着,如果我们需要改变 LiveData 中的数据时,只需调用其 setValue 或者 postValue 方法: // 缓存数据对象,保证编译中不会重排 private...,主要核心是在通知观察者的过程中引入了生命周期的感知,对于处于激活状态的 observer 才进行通知更新,当 observer 从非激活到激活状态也会收到通知。

    49120

    Android经典面试题之Kotlin中使用 LiveData、ViewModel快速实现MVVM模式

    MVVM 模式将应用程序的 UI 逻辑和业务逻辑分离,使用 LiveData、ViewModel 和 DataBinding 可以使代码更加模块化和可维护。...以下是实现 MVVM 模式的步骤和示例: 步骤 Model 层:负责数据的获取和处理,如数据库操作、网络请求等。 View 层:负责 UI 的显示,例如 Activity、Fragment。...ViewModel 层:作为数据和 UI 的桥梁,负责预处理数据,使之适合 UI 显示。使用 LiveData 来观察数据变化。...使用 LiveData 和 MutableLiveData 来观察数据变化。 3、 View 层: 使用 DataBinding 进行数据绑定。...通过上述步骤和代码,你可以在 Kotlin 中实现一个基本的 MVVM 架构。实际开发中,可能还需要根据具体需求扩展和改进。

    31810

    ViewModel 和 LiveData:为设计模式打 Call 还是唱反调?

    这样有几个好处: ViewModel 在配置重新加载(比如屏幕旋转)的时候是不会变化的,所以没有必要从外部(比如网络和数据库)重新获取数据。...由于保持缓存和数据库与网络同步的算法通常很琐碎复杂,所以建议为每个仓库创建一个类作为处理同步的单一入口。 如果是许多种并且差别很大的数据模型,考虑使用多个数据仓库。...视图层该如何区分被加载的数据,网络错误和空列表呢? 你可以从 ViewModel 中暴露出一个 LiveData 。...来看下面这个从 ViewModel 中取出来的字段: LiveData snackbarMessage = new MutableLiveData(); 一个 Activity 开始观察这个字段...,它允许在 UI 和应用程序的其他层之间建立方便的联系。

    3.1K30

    【Jetpack】ViewModel + LiveData + DataBinding 综合使用 ( 核心要点说明 | 组合方式 | 代码示例 )

    架构组件后 , 视图 View 与 数据模型 Model 之间实现了解耦 , 同时也能 保证二者之间的双向数据交互 , 减少了 Activity 代码量 , 增加了应用程序的可维护性 ; ViewModel...DataBinding 结合使用时 , 在 DataBinding 布局中设置的就是该 视图模型 类对象 ; 该 ViewModel 类中 , 还 使用了 LiveData , 可以实时监听数据改变...ViewModel 中的数据发生了变化 , 如何将变化应用到视图组件中 , 在视图中显示最新的数据内容 , 此时就用到了 LiveData 组件 ; 在 ViewModel 的基础上 , 通过 引入 LiveData..., 可以将 运行过程中 ViewModel 中的 Model 模型数据改变 通知 视图 View , 令视图组件显示最新的数据内容 ; 在 ViewModel 中使用了 LiveData 后 , 必须调用...实现 , 用于在 运行过程中 , 一旦 ViewModel 数据发生改变 , 就 通知 View 视图组件 , 更新数据显示 ; LiveData 生效需要 为 MutableLiveData 设置

    1.6K20

    LiveData beyond the ViewModel

    它是一个简单的观察者,能够意识到观察者的生命周期。从你的数据源或存储库中暴露LiveData是使你的架构更具反应性的一个简单方法,但也有一些潜在的陷阱。...img 为了在组件之间传递数据,我们需要一种方法来映射和组合数据。...请注意,数据不是自动为你组合的,MediatorLiveData只是负责通知的工作。 为了在我们的示例应用程序中实现转换,我们需要将两个不同的LiveDatas合并成一个。...img 使用MediatorLiveData来组合数据的方法是在不同的方法中添加来源和设置值。...在ViewModel中,我们需要公开一个randomNumber属性,从生成器中获取数字。为此使用MediatorLiveData并不理想,因为它要求你在每次需要新数字时都要添加源。

    1.5K30

    Android程序员该如何去手写事件通信方案LiveDataBus

    当组件从后台到前台来时,LiveData能够将最新的数据通知组件,这两点就保证了组件中和数据相关的内容能够实时更新。...当我们采用LiveData保存数据时,因为数据和组件分离了。当组件被recreate,数据还是存在LiveData中,并不会被销毁。...二、LiveData使用 在了解LiveData定义和优点后,那它到底怎么应用呢?...四、LiveData主要涉及到的时序有三个: 在Fragment/Activity中通过LiveData.observer()添加观察者(observer()方法中的第二个参数)。...在LiveData中的数据变化,通过postValue(可后台线程)或者setValue(主线程)设置后,将触发Observer的onChanged,开发者只需onChanged等待最新数据回调即可。

    1.4K10

    “终于懂了“系列:Jetpack AAC完整解析(二)LiveData 完全掌握!

    1.2 特点 使用 LiveData 具有以下优势: 确保界面符合数据状态,当生命周期状态变化时,LiveData通知Observer,可以在observer中更新界面。...实例mLiveData的创建是使用MutableLiveData,它是LiveData的实现类,且指定了源数据的类型为String。...//liveData6.setValue("liveData6"); 例如,如果界面中有可以从本地数据库或网络更新的 LiveData 对象,则可以向 MediatorLiveData 对象添加以下源...: 与存储在本地数据库中的数据关联的 liveData5 与从网络访问的数据关联的 liveData6Activity 只需观察 MediatorLiveData 对象即可从这两个源接收更新。...LiveData同样是我们必须掌握和理解的部分。 下一篇将介绍ViewModel,同样是AAC中的核心内容。今天就到这里啦~ .

    4K30
    领券