Compose 新闻App(一)网络框架搭建 前言 正文 一、项目创建 二、依赖配置 三、数据API 四、网络框架构建 五、项目配置 六、网络请求 七、源码 前言 要去学习新的知识,光是简单的使用还是不够的...正文 最近觉得Compose很有意思,想要去写一个关于Compose的系列文章,做一个简单的新闻App,话不多说,我们新建一个项目吧。...一、项目创建 这里选择的是Empty Compose Activity,点击Next。...二、依赖配置 作为一个新闻App,新闻数据的获取是通过网络API,那么我们需要先构建一个网络框架。...onCreate() { super.onCreate() context = applicationContext } } 然后因为我们访问的API是http开头的,在Android9.0
Compose 新闻App(三)网络数据Compose UI显示加载、DataStore和Room使用 前言 正文 一、样式 二、Scaffold(脚手架) 三、TopAppBar(顶部应用栏) ① 属性值...,现在主要就是Compose UI的设计。...">@color/blue900 "android:colorAccent">@color/blue700 "android:statusBarColor">@color...这是它里面提供的一些参数 你或许听说过Compose是声明式UI,但是更多的是插槽 API,插槽 API 是 Compose 引入的一种模式,它在可组合项的基础上提供了一层自定义设置。...Jetpack Compose 中的 LazyColumn 等同于 Android 视图中的 RecyclerView。这里的state就使用rememberLazyListState()。
Android Compose 新闻App(七)网络图片加载、Tab、HorizontalPager 前言 正文 一、申请API ① 增加服务接口 ② HomeRepository ③ HomeViewModel...二、网络图片加载 三、BottomBar遮挡 四、Tab + HorizontalPager 五、修改页面 六、源码 前言 在上一篇文章中,新增加了一个主页面,那么这个主页面用来做什么呢?...二、网络图片加载 之前在Android的开发你肯定是了解过Glide框架的,那么现在在Compose中使用Coli库,这个库有什么优点呢?...Coil 是一个 Android 图片加载库,通过 Kotlin 协程的方式加载图片。...使用它需要添加依赖,在app的build.gradle的dependencies{}闭包,代码如下: //Coil库 implementation 'io.coil-kt:coil-compose
在这条演进之路上,MVC、MVP、MVVM三大模式如同三座里程碑,分别代表了Android社区在不同阶段对关注点分离(SeparationofConcerns)、可测试性(Testability)和状态管理...其兴盛(约2016–2019)恰逢Android单元测试文化兴起,但最终被更优雅的MVVM取代。...2025年现状:MVVM已成为Android官方推荐架构的核心,尤其与JetpackCompose结合后,形成“状态驱动UI”的终极形态。...契合Compose:Compose的@Composable函数天然适配“State→UI”映射。...如何利用Compose+Coroutines+Flow实现声明式、响应式、可测试的现代Android应用?而这一切的起点,正是当年那个试图从“上帝Activity”中挣脱出来的你。
前言 在我的新书《Android Jetpack开发:原理解析与应用实战》 项目实战中,我们实现了一个MVVM版本的出行防疫App。...之前说过,会开发对应的Compose版本,如今,他来了~ 项目简介 如果你还没看过非Compose版本可以点击链接查看。...这是一款MVVM模式的Compose App,采用了组件化、Aroute、协程、flow等技术,适合初学者学习使用。此项目将长期维护,后续所有的新技术、平台适配等都将基于此项目实践。...聚合数据"在线API,需申请对应的API,申请成功后将key值替换到appbase下BaseApi中的KEY变量中 模块说明 app 入口模块 appbase 基础模块:基类Activity、网络请求...~ 项目地址 如果你觉得项目对你有帮助,欢迎start和Issue~ 项目地址:GitHub - huanglinqing123/TravelPreventionCompose: Compose-MVVM
前言 Jetpack Compose是Android推出的新一代声明式UI框架,Compose库是用响应式编程的方式对View进行构建,用更少更直观的代码拥有更强大的功能,同时还能提高开发速度。...总的来说与Compose最为契合的架构还是MVVM。MVVM凭借着Controller清晰简洁、方便测试、开发解耦等优势深得各开发大佬的青睐。 ##如何快速入门 Compose ?...对于广大开发者来说,Compose是Android UI的未来,现阶段你可以不会用,但是未来如果你还想留在Android平台的话,Compose就是你必不可少的技能之一。...插槽API 第二章 Jetpack Compose构建Android UI 1....Android Jetpack Compose 最全上手指南 Jetpack Compose 环境准备和Hello World 布局 使用Material design 设计 Compose 布局实时预览
不过,从Android Jetpack Compose开始,双向数据绑定变得更加直接和简单。Compose使用Kotlin语言编写,提供了声明式的UI构建方式,并支持双向状态管理。...在Android应用中,数据加载和更新往往涉及网络请求或数据库操作,这些操作通常比较耗时。通过异步处理这些操作,可以避免阻塞UI线程,提高应用的响应性。...4、双向数据绑定(在支持双向绑定的场景下) 虽然Android原生的Data Binding库主要支持单向数据绑定,但可以通过其他方式(如使用Jetpack Compose或自定义解决方案)实现双向数据绑定...异步数据处理与同步更新 异步数据处理: 在Android开发中,数据加载和更新往往涉及网络请求或数据库操作,这些操作通常比较耗时且应该在后台线程中执行。...4、异步加载和处理数据:在MVVM模式中,数据的加载和处理可能涉及耗时的操作,如网络请求或数据库查询。
废话 说起现在Android流行的app架构,脱口而出MVP、MVVM,要问两者区别,张口就来,balabalabala。。...当然光说MVVM是不行的,肯定要讲一讲网络请求框架Retrofit,Retrofit和RxJava通常都是配套使用,所以这篇文章就把三者串在一起讲。...在MVVM模式中ViewModel和View是用绑定关系来实现的,所以有了DataBinding 使我们构建Android MVVM 应用程序成为可能。...Adapter的写法 粉丝列表:从网络获取数据,主要演示RxJava+Retrofit的基本使用方法 构建 理论讲了这么多,不废话了,下面就开始搭建MVVM的应用程序。...compose指定请求网络和结果回调的线程 preAction主要是为了在请求之前做一些前置操作,比如showLoadingView啥的 subscribe绑定了订阅者,下面就来看下这个订阅这做了哪些事情
数据冲击:据2025年腾讯技术报告,40%高级Android开发者因架构设计缺陷被大厂一票否决。...薪资逻辑: 15k开发者:能实现功能,但代码耦合度高(如Activity塞满网络请求+数据库操作) 40k开发者:用架构思维解耦业务,支撑高并发、低延迟场景(如直播间弹幕分流策略) 二、突破瓶颈的3...展示层:用Compose+LazyColumn实现差异更新,避免全局刷新 // 消息流处理核心代码(数据层) fun fetchLiveMessages(): Flow = callbackFlow...参考答案: 使用:module-dependency-checker插件强制检测 在Domain层定义Repository接口,Data层实现 模式3:MVVM进阶版 —— 腾讯/快手性能优化核心...防内存泄漏:在ViewModel中使用CoroutineScope(SupervisorJob()) 高频面试题: “如何检测MVVM架构中的内存泄漏?”
看起来Google已经开始推荐使用MVI架构了,大家也有必要开始了解一下Android应用架构指南的最新版本了~ 总体架构 两个架构原则 Android的架构设计原则主要有两个 分离关注点 要遵循的最重要的原则是分离关注点...每当数据发生变化时,无论是因为用户互动(例如按了某个按钮),还是因为外部输入(例如网络响应),界面都应随之更新,以反映这些变化。...当然在软件开发中没有最好的架构,只有最合适的架构,各位可根据情况选用适合项目的架构,实际上在我看来Google在指南中推荐使用MVI而不再是MVVM,很可能是为了统一Android与Compose的架构...因为在Compose中并没有双向数据绑定,只有单向数据流动,因此MVI是最适合Compose的架构。...,后续也可以无缝切换到Compose。
前言 MVVM和MVP是当前比较流行的两种应用开发架构,两者各有优缺点。目前公司所有Android项目用的都是MVP架构,所以这篇文章我们可以一起来深入了解一下。...本文仅讨论在Android平台应用开发中的使用,其它平台也相似但可能存在些许差别。 简介 在搭建MVVM项目之前我们先来简单了解下MVVM模式,以及和MVP的区别。...在Android中我们可以通过一个简单的配置集成DataBinding,使我们构建Android MVVM 应用程序成为可能。...RecyclerView列表Adapter的写法 (4)粉丝列表:从网络获取数据,主要演示RxJava+Retrofit的基本使用方法 构建 废话讲了这么多,下面开始正式搭建MVVM应用。...Compose指定请求网络和结果回调的线程。 PreAction主要是为了在请求之前做一些前置操作,比如ShowLoadingView啥的。
但是Android本身的AsyncTask的设计个人觉得设计的十分糟糕,不但写出来的代码冗长,而且稍微复杂一些的多流操作就会写的完全无法维护(这里可以用Java本身的线程模式来实现)。...并且总需要显示当前最新输入内容的结果,不能因为网络的原因产生乱序的结果。...其中.compose....这个有一个坑,就是PB原生的生成器生成的方法数非常多,会造成Android方法数64K的问题。微信里的pb生成器做了比较多的优化,来减少方法数问题。...://medium.com/ribot-labs/approaching-android-with-mvvm-8ceec02d5442#.suutwto9a) android-application-architecture
theme: condensed-night-purple Android官方推荐架构:DDU MVVM对比 M:Model 网络层 用于获取远端数据 VM:ViewModel 中间转换层 获取网络层数据进行转换成...可以直接使用的数据 V:VM提供数据,V负责展示,VM中通过提供可被观察的数据流(Flow或者LiveData)来实现V层被动更新,不需要手动调用VM获取数据 DDU 数据消费者UI UI layer,对应于MVVM...的V层用于展示数据 UIElements:界面元素 通过View/Compose实现的界面树 UIState:界面数据状态 通过包装界面控件属性值来驱动UI改变 数据的转换者:Domain Layer...LiveData包装可被观察的数据流,Domain Layer层可直接改变也可以放到DataLayer中去处理(根据业务逻辑选择) 数据图生产者/提供者 DataLayer 整合用户需要的备份内存数据操作及请求远端网络数据这两个数据层
MVC MVC 其实是 Android 默认的设计,MVC 里将代码分为三个部分: View: Layout XML 文件; Model: 负责管理业务数据逻辑,如网络请求、数据库处理; Controller...MVP 同样将代码划分为三个部分: View: Activity 和 Layout XML 文件; Model: 负责管理业务数据逻辑,如网络请求、数据库处理; Presenter: 负责处理表现逻辑。...在实现细节上,View 和 ViewModel 之间的多个交互(多 LiveData 数据流)变成了单数据流。...实践中应该根据状态之间的关联程度来决定使用单流还是多流; 内存开销: ViewState 是不可变类,状态变更时需要创建新的对象,存在一定内存开销; 局部刷新: View 根据 ViewState 响应...但是不可否认,从 React 到 Flutter,从 MVI 到 Compose,响应式编程似乎有一统天下的趋势。未来会怎么样,我们拭目以待。
最近一直在学习 React,在看到 React Hooks 一章时联想到 Compose ,简直有着异曲同工之处,他们都是由 UI 组件、State 状态、Effect 副作用构成,而且,Android...端很多优秀的架构思路都来源于前端,适当性的学习些前端知识,反而更能容易理解当下 Android 原生的架构,这也是我一直推荐大家有时间也学习一下前端的原因,本期主要聊聊 Android 原生与 React...1、基于类组件的对比 原生 对于原生 Android 来说,通过 Activity 类来承载当前界面的 UI ,例如如下示例: class HomeActivity extends Activity{...vm.observer(this){ textView.text = it // 更新 UI } } } 这还是一个比较简单的例子,当业务越来越复杂,最后你会发现,虽然项目是按照 MVVM.../docs/hooks-effect.html [2] Compose 中的附带效应: https://developer.android.com/jetpack/compose/side-effects
我希望这个 Skill 能做到: 代码生成时自动遵循 MVVM + Hilt + Compose 规范 分析 Crash 日志时能快速定位 Android 特有的根因 提供当前稳定的依赖版本,直接可用...第二步:设计文件结构 把知识分三类存放: conventions.md:ViewModel、Repository、Compose 的标准模板 + 反模式清单 crash_patterns.md:NPE...当用户提出 Android 开发相关需求时使用,包括:生成 Kotlin/Java 代码(ViewModel、Repository、 Compose UI、Room、Retrofit 等)、分析 Crash...正文部分则列出核心能力索引和必须遵守的规范要点,把详细内容放到 references 文件里: ## 代码生成规范生成代码时遵循以下规范 (详见 references/conventions.md):- 语言:优先 Kotlin - 架构:MVVM.../android-dev \ .
在MVVM模式中ViewModel和View是用绑定关系来实现的,所以有了DataBinding 使我们构建Android MVVM 应用程序成为可能。 ...可复用性 一个View Model复用到多个View中,同样的一份数据,用不同的UI去做展示,对于版本迭代频繁的UI改动,只要更换View层就行,对于如果想在UI上的做AbTest 更是方便的多。...通过上面对MVVM的简述和其他两种模式的对比,我们发现MVVM对比MVC和MVP来说还是存在比较大的优势,虽然目前Android开发中可能真正在使用MVVM的很少,但是是值得我们去做一些探讨和调研。...4、总结和源码### 本篇博文讲解主要是一些个人开发过程中总结的Android MVVM构建思想,更多是理论上各个模块如何分工,代码如何设计,虽然现在业界使用Android MVVM模式开发还比较少,但是随着...DataBinding 1.0 的发布,相信在Android MVVM 这块领域会更多的人来尝试,刚好最近用MVVM开发了一段时间,有点心得,写出来仅供参考。
今天,我们就以 ChatDemo 为例,看看如何用一套 Kotlin 代码,在 Android、iOS 和 HarmonyOS 三端上通过 Kuikly Compose 完美复刻 ChatGPT 的流式对话体验...四肢 } } Kuikly Compose 写法 页面定义不同于之前的 BasePager + DSL,Compose 风格的页面继承自...组件与布局Kuikly Compose 完美复刻了 Jetpack Compose 的开发体验,让习惯了 Android 开发的同学们倍感亲切。 1....Android & iOS (Ktor 协程)这两兄弟关系好,直接用 Kotlin 协程配合 Ktor 网络库,处理起来行云流水: ...// OhosStreamRequestModule.kt fun request(...) { // 呼叫鸿蒙原生层
今天我们来深入探讨MVVM 的原理、优点,以及如何通过它来构建一个现代应用的架构。 什么是 MVVM?...MVVM 实现的核心概念 数据绑定 数据绑定是 MVVM 的核心机制。它允许 View 和 ViewModel 之间的自动同步。以一个简单的 双向绑定 示例为例: <!...移动端开发 在移动端,像 Android 的 DataBinding 和 Jetpack Compose 都使用了类似于 MVVM 的模式。通过这种模式,可以大大减少 UI 与业务逻辑之间的耦合度。...桌面应用 MVVM 也在桌面应用中广泛应用,比如 WPF 和 UWP 等技术栈,它们都采用了 MVVM 模式来管理复杂的 UI 与逻辑交互。...参考资料: Vue.js 官方文档 Android Developer:DataBinding
不同于Android基于Linux单内核,HarmonyOS采用微内核设计,支持多设备协同。...2.2 开发语言对比 对比项 Android HarmonyOS 主力语言 Kotlin/Java ArkTS(TypeScript超集) UI框架 XML/Compose ArkUI(声明式UI) 异步处理...四、架构对比:从Android到HarmonyOS的思维转换 4.1 应用架构模式对比 架构转换要点: HarmonyOS的MVVM模式和Android基本一致,最大区别在于数据层。...HarmonyOS的声明式UI更简洁,如果你用过Compose或Flutter,会觉得特别亲切。...相信我,当你第一次实现多设备协同功能时,你会和我一样兴奋——原来开发可以这么简单有趣! 关于作者: 一个从Android转型HarmonyOS的老开发,踩过坑,也尝过甜头。