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

Android Compose 新闻App(三)网络数据Compose UI显示加载、Room和DataStore使用

Compose 新闻App(三)网络数据Compose UI显示加载、DataStore和Room使用 前言 正文 一、样式 二、Scaffold(脚手架) 三、TopAppBar(顶部应用栏) ① 属性值...四、列表 ① 显示列表 ② 滑动列表 ③ 加载网络数据 五、Room使用 ① 添加依赖 ② 基础配置 ③ 使用 六、DataStore使用 ① 添加依赖 ② 封装 ③ 使用 七、源码 前言   现在数据已经有了...Jetpack Compose 中的 LazyColumn 等同于 Android图中的 RecyclerView。这里的state就使用rememberLazyListState()。...五、Room使用   现在数据有了,那么为了减少接口API的访问次数,我们需要将数据存储到本地数据库中,我们可以每天访问两次或一次接口,然后其余的访问都从数据库中去获取数据。这样是不是很好呢?...这就是说当我的数据库中有数据了,那么就从本地数据库中去获取数据显示UI上,运行一下: 你会发现报错了,报错的原因就是我标注的这里,大意就是无法主线程中访问数据库,那么也好解决,Room上加一个配置就可以了

2.8K31
您找到你想要的搜索结果了吗?
是的
没有找到

实现Android本地Sqlite数据库网络传输到PC端

——《微卡智享》 本文长度为4578字,预计阅读7分钟 前言 开发初期,当Android端嵌入硬件中,并且本地数据库单机业务逻辑挺多,往往要分析数据是否处理正常,需要直接从数据库中查看,这时我们一般都是将数据库拷贝到...PC端后查看分析,虚拟机中可以实现直接拷贝,但是真机无法直接访问Android端data/data/包名/databases的数据库路径,所以做了一个小Demo,通过网络将本地数据库文件传到PC端。...主要我最近开发的是硬件设备,装的Android平板控制,要求断网情况下单机也能运行,所以基本的业务逻辑包括数据的保存都在本地处理,后台定时通讯上传数据,除了文章开头说的开发初期可以方便传上来数据库来分析...Demo中使用的库 AndroidRoom+LiveEventBus+VNanoMsg allprojects { repositories { google()...C#:NNanoMsg 要在Nuget包中添加NNanoMsg Android端Demo 上图中Android端Demo的所有类文件,主要多是的Room的类,像实体的创建,Dao的使用,还有数据库的创建等

1.1K20

Android Jetpack架构组件(一)与AndroidX

),它包括了LifeCycle、LiveData、ViewModel、Room等组件,而在Goole I/O 2018大会上谷歌使用AndroidX替代了Android Support Library,...Navigation:处理应用内导航所需的一切 Paging:一次加载 or 按需加载 & 显示小块数据 Room:帮助开发者更友好、流畅的访问SQLite数据库。...存储区是唯一依赖于其他多个类的类,本例中存储区依赖于持久性数据模型和远程后端数据源。并且,这些架构组件既可以配合使用,也可以单独使用,可以根据需要合理选择。...Slices(切片):创建可在应用外部显示应用数据的灵活界面元素。 2.4 UI(界面组件) 界面组件主要提供各种辅助绘制界面的View类 和各种辅助组件,具体包含。...4.1 AndroidX简介 AndroidX是谷歌 2018 I/O 大会上推出的用于替换android.support.libraryAndroid扩展库,按照官方文档说明,android.support.library

1.9K00

Android从零单排系列四十三】《浅谈Android数据持久化》

Room Persistence Library:这是一个Android中抽象和管理SQLite数据库的开发库。它提供了更高层次的抽象,简化了数据库的操作,同时支持基于对象的映射(ORM)。...二.Android 数据持久化如何选择 选择Android数据持久化方式时,可以考虑以下几个因素: 数据类型和结构:首先需要确定你要存储的是什么类型的数据,是简单的键值对还是结构化的数据。...SQLite数据库适用于处理大规模的数据集,而Room Persistence Library提供了更高层次的抽象,方便管理和操作较大的数据库。...数据库版本控制:如果选择使用SQLite数据库或Room Persistence Library进行数据持久化,应该考虑数据库版本控制。随着应用的升级和迭代,可能会修改数据库结构或添加新的表和字段。...避免主线程上执行耗时的数据库操作,可以使用异步任务、线程池或者Android中的Room库提供的协程进行异步操作。

42621

Android Architecture Paging Library详解 | Google IO大会上的最新发布

将之前发布的一系列组件比如 Lifecycle、LiveData、Room、ViewModel等进行融合从而推出了一套官方认证的开发体系Android Jetpack。...>>>> Paging Library 库的架构 ? 从图中可以看出,Paging是围绕PagedList为中心的,遵循数据驱动的思想。...>>>> PagedListAdapter PagedListAdapter继承于RecycleView.Adapter,用来RecycleView中显示PagedList 的数据。...>>>> Paging Library 加载数据流程 ? 如上图所示,Paging加载数据是在后台线程进行的,加载完成后主线程显示。...可以看出,整个过程Paging内部实现了线程的切换,数据的预加载,所有联动都是Paging中,使用者只用关心加载数据的具体实现。

1.5K20

Android Room数据库版本迁移的实战

前言 最近一直在做一款Android的新产品,所以更新的文章基本都是Android相关,主要是产品中的应用的东西及一些笔记,新产品中Android本地数据库要存放的东西还挺多的,所以这篇是专门针对Android...迁移路径缺失的情况下,如果丢失现有数据可以接受,请在创建数据库时调用 fallbackToDestructiveMigration() 构建器方法: Room.databaseBuilder(applicationContext...警告:应用的数据库构建器中设置此选项意味着 Room 尝试执行没有定义迁移路径的迁移时会从数据库表中永久删除所有数据。...如果您只想让 Room 特定情况下回退到破坏性重新创建,可以使用 fallbackToDestructiveMigration() 的一些替代选项: 如果特定版本的架构历史记录导致迁移路径出现无法解决的问题...如上图中一样,把刚才设置的几个数据库升级都加到addMigrations中即可实现数据库升级了。

1.8K20

Android Room 持久化库

摘自 Room Persistence Library 使用 Room 本地保存数据 原文地址 https://developer.android.com/training/data-storage/...").build(); 数据库实例最好是单例以节省内存开销 使用 Room 实体定义数据 原文地址 https://developer.android.com/training/data-storage...测试数据库有两种方法 Android 设备上 开发主机上(不推荐) 关于测试指定数据库升级的信息 上面已经说过了。 注意:测试时,Room允许创建Dao的模拟实例。...Room使用SQLite Support Library,它提供了与Android Framework类中的接口相匹配的接口。...如果提前查询作者信息,如果不再需要数据,则很难更改数据的加载方式。例如,如果您的应用程序的用户界面不再需要显示作者信息,则您的应用程序会有效地加载不再显示数据,从而浪费宝贵的内存空间。

3.9K70

开发必须了解的10个Android

ThreeTen ThreeTen是一个处理日期和时间的Library。它满足 JSR-310标准,Java8里已经作为标准库被集成到 java.time.* 包里面。...RoomAndroid官方的ORM框架。...ORM是以面向对象的思路来处理数据/数据库的一种技术。Room提供跟Retrofit类似的完美的API接口。同时它也依赖注解和标准SQL语法。...跟其他ORM框架对比的话,Room不需要阅读复杂的文档才能明白如何使用,它没有复杂的API。这样是它的优势。...开发者更愿意看到实时更新的UI,换句话说他们更愿意看到UI能随着数据的变化而自动更新。 当我们处理数据的时候,通常在切换线程和错误,还有多个API之间调用的时候情况会变的复杂。

2.2K50

数据库还可以这么看 ?

那么,你们一般都是如何查看或者调试数据库的呢? 你是如何查看和调试数据库的 ? 我们都知道,数据库文件是存在应用沙盒中的,无法直接查看。.../Android-Debug-Database 项目中集成之后,可以浏览器端直接查看,修改,编辑当前应用的数据库文件。...左侧会列出应用的所有数据库,双击数据库,下拉列表中会展示出该数据库下的所有表。双击表,会在右侧视图中展示当前表中的所有数据。 表中的任何数据都是可以修改的。双击任意一项,修改之后,回车保存。...你 Room 中通过 @Query 注解标记的接口方法,可以 Android Studio 中直接执行并在 Database Inspector 中直接展示执行结果。...最后 可以说,Database Inspector 大大提升了我们的数据使用体验,特别是针对 Room

68820

开发者也是用户 - 第二部分:改善 UI 和 API 可用性的五条指导原则

比如,查询数据库时,Room 提供不同的返回值,允许用户进行同步查询,使用LiveData,或者如果他们喜欢的话,使用 RxJava2 中的 API。...不要让用户做任何 API 能够做的事情 API: 从 22.1.0 开始,Android Support Library 提供 RecyclerView 相关的一系列对象,使用户可以基于频繁改变的大型数据集创建... 25.1.0 版本的 Support Library, 这类反复出现的代码被 [DiffUtil](https://developer.android.com/reference/android/support...来源 输入区域失去焦点时尽快显示错误信息,不要等到用户点击提交表单的按钮。更不要等到服务端传来错误信息。使用 TextView 的功能 来显示错误信息。...比如, Room 中,如果一个查找主线程运行,用户将会获得 java.lang.IllegalStateException: 不能在主线程访问数据库,因为它有可能把 UI 锁住较长的一段时间。

84630

一起看 IO | Jetpack 组件的新特性

数据持久化 Room 是我们推荐的数据持久化层,它在 SQLite 之上提供了一个抽象层,从而提高了平台的可用性和安全性。...除此之外,由于 Room 支持使用多重映射 (嵌套的 Map 和 Array) 进行关联查找,开发者现在可以使用 JOIN 查询,而无需定义额外的数据结构。...增量数据获取 Paging 库可以让您加载和显示整体数据中的一小部分,从而改善网络与系统资源的消耗。...架构库指南 针对我们的核心架构库如何协同使用这一问题,如您想要了解更多信息,可以观看我们的视频与 文章 合集,这其中涵盖了现代 Android 开发最佳实践系列内容——MAD Skills: 架构。...Baseline Profiles 允许应用和库向 Android 运行时提供有关代码路径使用情况的元数据,从而确定提前编译的优先级。

3.1K20

正式发布 Android 架构组件 1.0 稳定版

今天我们很高兴地宣布 Room 和生命周期管理(Lifecycles)的架构组建库 1.0 稳定版正式发布,其 API 已经可以在生产环境的 App 和库中使用,并且我们强烈建议 App 架构和本地储存方面需要帮助的开发者使用这些...此外生命周期管理同时也已集成到支持库中(Support Library),因此开发者也可以标准类别里,如 AppCompatActivity 中使用这些 API。...同时我们也开始借助 LiveData —— 一个可以感知 Activity 生命周期的数据容器 —— 用于获取和显示网络数据,而不用再担心网络调用的订阅管理。...了解更多 ViewModel 相关内容: developer.android.google.cn/topic/libra… Room ? 几乎所有 App 都需要在本地储存数据。...自从最早版本开始,Android 就提供了 SQLite,但是直接使用 SQLite是件苦差事。因此,我们推出了 Room,一款简单好用的对象映射层。

48420

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

一、Room + ViewModel + LiveData 框架使用核心要点 1、Room 框架优化分析 在上一篇博客 【Jetpack】使用 Room 框架访问 Android 平台 SQLite 数据库...( 导入依赖 | 定义 Entity 实体类 | 定义 Dao 数据库访问对象接口 | 定义数据库实例类 ) 中 , 实现了 使用 Room 框架访问 Android 中的 SQLite 数据库的操作...系统组件 , 负责维护 Android 视图组件 , 显示数据由 ViewModel 提供 ; 3、Room 与 LiveData 结合使用要点 对于 Room 框架使用来说 , Room 与 LiveData...query(id: Int): List Room 框架的用法 , 参考 【Jetpack】使用 Room 框架访问 Android 平台 SQLite 数据库 ( 导入依赖 | 定义...框架主动查询数据数据需保留除 LiveData 返回值外的正常查询方法 Room 框架 与 LiveData 结合使用之后 , Room 框架中的 Dao 数据库访问接口中 定义了 LiveData

61720

Android AppBar

但Action Bar的引入最初没有很好的考虑兼容问题,随着不同系统版本逐渐增加特性完善起来,不同主题会有不同的显示效果。简而言之,就是兼容性不好,API的设计也比较散乱。...而Tool Bar的推出,以独立纯净的支持库的形式提供了App Bar需要的所有特性,这样,可以最大范围的设备上表现出这一最新的UI设计,API得到统一,而且提供更好的定制。 ?...Action View可以指定显示App Bar中的View,处理View的展开和收起等逻辑。Action Provider更灵活些,允许自定义UI布局,处理所有点击事件,弹出的菜单列表等。...可以使用它为整个app提供统一头布局,如顶部多级标题。...总结 文章简单的把Google官方的Android开发文档中的介绍App Bar的部分进行了摘取,整理为markdown文章。 以上4节对ToolBar的使用进行了入门级介绍。

92260

分享一个我开发的MVVM架构的开源小项目

去年年底的时候抽时间研究了下Google的Jetpack,这是一款18年Google I/O大会上推出的Android开发组件工具集,旨在帮助我们轻松构建更稳定、更健壮、以及更可维护的应用程序。...当然,上述组件中你并不一定要全部使用,而是可以选着使用自己项目的实际情况选取那些最合适的组件即可。 本篇文章我并不会带着大家一起学习Jetpack中的诸多组件,只是做个简单科普而已。...简而言之,仓库的工作就是本地和网络数据之间做一个分配和调度的工作,调用方不管你的数据是从何而来的,我只是要从你仓库这里获取数据而已,而仓库则要自主分配如何更好更快地将数据提供给调用方。...接下来灰色部分表示是的本地数据层,实现方式并不固定,我使用了LitePal来进行数据持久化处理,你也可以使用别的框架(这里我没有使用官方的Room还是因为Room真的不太好用)。...最后红色部分表示的是网络数据层,这里使用了Retrofit从web服务接口获取数据

75130

探索 Android Design Support Library v28 新增内容

我们按照原样使用 MaterialButton 类, 并且我们的视图中, 它将具有我们所追求的材质外观和质感 -- 将其视为一个提供方便的类. ?...Chip Chip 组件允许我们布局中展示一个纸片组件. 其本质上一些文字被赋予一个圆形背景 -- 这样做的目的是向用户显示某种形式的文本集合, 可能被选择也可能不被选择....我们可以像这样布局中添加一个 Chip , 使用 app:chipText 属性设置 Chip 中显示文本: <android.support.design.chip.Chip android...我们也可以声明子 Chip 视图 ChipGroup 容器中单行显示. 使用 app:singleLine 属性: ?...我也很高兴能够找到一个可以使用底部应用栏的用例, 但我确信 Support Library 版本稳定之前还有一段时间才能实现. 按照惯例, 我很乐意听到您对这些新组件的想法或评论!

1.8K20

【Jetpack】使用 Room 框架访问 Android 平台 SQLite 数据库 ( 导入依赖 | 定义 Entity 实体类 | 定义 Dao 数据库访问对象接口 | 定义数据库实例类 )

; plugins { id 'com.android.application' } 如果使用 Kotlin 语言开发 , 需要在 android 插件 的基础上 额外导入 kotlin 和...; /** * 姓名字段 * 数据库表中的列名为 name * 数据库表中的类型为 TEXT 文本类型 */ @ColumnInfo(name...等参数 ; 然后 , 调用 RoomDatabase.Builder 对象的 build 函数 , 创建数据库 ; 注意 : Room 原则上不允许主线程操作数据库 , 如果要在主线程操作数据库 需要调用...) lateinit var name: String /** * 年龄字段 * 数据库表中的列名为 age * 数据库表中的类型为 INTEGER 文本类型...单例类 , 单例对象初始化时 , 创建数据库 ; 完整代码 : package kim.hsl.roomdemo import android.content.Context import androidx.room.Database

33630

【Jetpack】使用 Room 中的 Migration 升级数据库异常处理 ( 多个数据库版本的迁移 | fallbackToDestructiveMigration() 函数处理升级异常 )

一、Room#Migration 迁移工具升级数据Room Migration 数据库迁移工具 是 Android Jetpack Architecture Components ( 架构组件 )...的一部分 , 它是一个方便的 数据库迁移工具 , 用于为 Android使用 Room 框架创建的数据库 提供 自动化迁移方案 ; Room Migration 数据库迁移工具用途如下 : 数据库修改...) lateinit var name: String /** * 年龄字段 * 数据库表中的列名为 age * 数据库表中的类型为 INTEGER 文本类型...】使用 Room 中的 Migration 升级数据库 ( 修改 Entity 实体类 - 更改数据模型 | 创建 Migration 迁移类 | 修改数据库版本 | 代码示例 ) 中 , 讲解了如何使用...处理上述异常需要在 创建 RoomDatabase.Builder 时 , 执行一下 RoomDatabase.Builder#fallbackToDestructiveMigration() 函数 , 之后使用

29420
领券