前言 不同应用之间的传值可以使用以下几种方式: Intent传值:使用隐式Intent,但需要确保接收方应用可以响应该Intent。...Content Provider 通过Content Provider可以在不同的应用之间共享数据。...怎样选择: 假如A是数据的提供方,B是数据的接收方, 如果B一定是A唤起的并且传值的可以使用Intent传值方式 如果B也能自己打开,还要获取A的值,就使用Content Provider方式。...Intent传值 使用Intent在不同的应用之间传递数据,可以通过Intent的putExtra()方法添加数据,并通过startActivity()或startActivityForResult()...} } Content Provider Content Provider:通过Content Provider可以在不同的应用之间共享数据。
需求: 在产品开发中,经常需要发布各个版本,每个版本的服务器地址有不同的服务器地址。...在使用Android studio之后,就需要了解 gradle脚本了。...而在配合 gradle 的 buildTypes 配置不同的编译类型(比如测试,开发,上线三种类型),每个类型指定不同的 字段的值。...而在成功build后,gradle会为 美工不同的类型环境生成不同的apk包,比如一次性就生成了 测试,开发,上线三个apk包。...这个方法需要三个参数,分别是 字段变量类型,变量名,和值。
背景 在我的Jetpack_Note系列中,对每一篇的分析都有相对应的代码片段及使用,我把它做成了一个APP,目前功能还不完善,代码我也上传到了GitHub上,参考了官方的Demo以及目前网上的一些文章...Jetpack是什么想必大家对它都已经有了基本的了解了,官方介绍以及官方文档: https://developer.android.com/jetpack Jetpack 是一套库、工具和指南,可帮助开发者更轻松地编写优质应用...在Android Developers官网上,Jetpack作为一个Tab和Kotlin、Android Studio等一样的地位也同样占据了一个模块,Jetpack里目前包含的内容,未来想必也是谷歌大力维护和扩展的东西...4.3 LiveData 在LiveData模块,通过生命周期观察LiveData的值,并将它打印在控制台中,点击 开始观察数据 按钮,通过演示生命周期函数,返回桌面或者进入后台,查看LiveData对象的值...Map转换则演示通过转换存储在LiveData对象中的值,并向下传递转换后的数据。
Jetpack 项目正是为了解决这些问题而诞生的,Jetpack 是一系列助力您更容易打造优秀 Android 应用的工具和组件,这些组件能帮助您遵循最佳实践、免除编写繁复的样板代码并简化复杂任务,从而使您可以专注于最核心的代码逻辑...其中 androidx.* 库与 Framework API 解耦,这能够提供向后兼容的同时,也能更频繁地更新。 Android Jetpack 中的架构组件可帮助您设计稳健、可测试且易维护的应用。...但这个功能还停留在测试阶段,所以请在 Gradle 配置文件中使用如下代码手动打开: android.databinding.incremental = true 和 Android Studio 更紧密地集成...视图绑定 (View Binding) 给出 ID 即可自动生成绑定类代码且能保证编译安全,能做到一石 "三" 鸟的视图绑定可在 Android Studio 3.6 Canary 11 或更新版本中用得上...ViewModel 用于: 保留应用对网络、数据库的请求 当作大型对象的缓存 SavedState 用于: UI 的状态记录,比如选择区域和滚动距离等 导航状态键值记录 各取所长,联手打造流畅体验 //
LiveData 概述 LiveData 是一个可观察数据包装类,与普通观察者不同,LiveData 具备生命周期感知能力,这意味着它遵循其它应用组件的生命周期(Activity、Fragment、Service...例如,后台活动在返回前台后立即接收最新数据 配置更改友好 如果由于配置更改(例如设备轮换)而重新创建活动或片段,则会立即接收最新的可用数据 资源共享 你可以使用单例模式扩展 LiveData 对象以包装系统服务...具体可以参考 Android Jetpack - Room 一文所提供的代码示例 转换 LiveData 您可能希望在将 LiveData 对象分派给观察者之前更改存储在 LiveData 对象中的值,...或者您可能需要根据另一个 LiveData对象的值返回不同的 LiveData 实例。...对象中的值,并将结果解包并调度到下游。
Google 为了帮助 Android 开发者更快更好地开发 App,推出了一系列组件,这些组件被打包成了一个整体,称作 Android Jetpack,它包含的组件如下图所示: ?...Android Studio 提供的迁移工具(Refactor > Migrate to AndroidX)可以将源码中的旧包名替换成新的,但是如果 Maven 依赖的产物还未迁移到 AndroidX...: LiveData = _waveCode 内部用 MutableLiveData ,可以修改值,对外暴露成 LiveData 类型,只能获取值,不能修改值。...至此,我们可以确定,无论数据来自 Remote 还是来自本地 DB,架构蓝图中的 Repository 对 ViewModel 提供的数据可以永远是 LiveData 类型,接下来我们看一下 ViewModel...Android 自身提供了很多方案来解决后台任务执行的问题,可以根据下图的决策路径选择不同的组件: ? WorkManager 整体上可分为四部分:任务类型、任务构建、任务监控和任务控制。
When and why to use Android LiveData 差不多一年前(2017年5月的第一个alpha版本),谷歌发布了 "安卓架构组件",这是一个库的集合,旨在帮助安卓开发人员设计更强大...这个ViewModel(注意,基类属于Android架构组件)的伟大之处在于,它在Activity的生命周期中被保留下来,这意味着它将一直存在,直到Activity永久消失,也就是Activity销毁。...在我们的例子中,视图模型从UserRepository类中获得其返回值,该类保留了一个LiveData的实例,该实例包裹着一个数据持有者FollowStatus。...整个公共API是一个方法 contacts() 在这个例子中,我们为每个方法的调用创建了新的LiveData,为了避免这种情况,我们必须解决参数可能不同的问题。Lazy Map在这里可以提供帮助。...希望这篇文章能帮助你选择。编码愉快! When NOT to Use LiveData 如果你熟悉Android开发,我毫不怀疑你已经听说过架构组件,甚至可能在你的项目中使用了它们。
Google 为了帮助 Android 开发者更快更好地开发 App,推出了一系列组件,这些组件被打包成了一个整体,称作 Android Jetpack,它包含的组件如下图所示: ?...Android Studio 提供的迁移工具(Refactor > Migrate to AndroidX)可以将源码中的旧包名替换成新的,但是如果 Maven 依赖的产物还未迁移到 AndroidX...P,也可以做 UI 的数据适配,这一层可以实现数据驱动 UI;最后是 Repository 层,它作为 SSOC,是一个 Facade 模式,对上层屏蔽了数据的来源,可以来自 local,也是来自 remote...waveCode: LiveData = _waveCode 内部用MutableLiveData,可以修改值,对外暴露成LiveData类型,只能获取值,不能修改值。...至此,我们可以确定,无论数据来自 Remote 还是来自本地 DB,架构蓝图中的 Repository 对 ViewModel 提供的数据可以永远是 LiveData 类型,接下来我们看一下 ViewModel
为此,架构组件团队打造了 LiveData: 一个专用于 Android 的具备自主生命周期感知能力的可观察的数据存储器类。...数据流: 把简单复杂化,又把复杂变简单 LiveData 就做了一件事并且做得不错: 它在 缓存最新的数据 和感知 Android 中的生命周期的同时将数据暴露了出来。...StateFlow 与 LiveData 是最接近的,因为: 它始终是有值的。 它的值是唯一的。 它允许被多个观察者共用 (因此是共享的数据流)。...#2: 把一次性操作的结果暴露出来 这个例子与上面代码片段的效果一致,只是这里暴露协程调用的结果而无需使用可变属性。...#3: 带参数的一次性数据加载 比方说您想要加载一些依赖用户 ID 的数据,而信息来自一个提供数据流的 AuthManager: △ 带参数的一次性数据加载 (LiveData) 使用 LiveData
而我们查询表一的结果时需要获取表二的favorite值。 @Query("SELECT table1....而现在Android Studio中支持了数据库实时调试。 我们app安装并启动后,我们可以通过Android Studio实时看到app中的sqlite数据库,以及数据库中的表和数据。...(如果没有该功能,那么代表我们的Android Studio比较老了。建议升级) 当我们启动设备调试后,可以通过选择不同的app。看到该app下的全部数据库。...直接通过Android Studio 查询app的数据 例如我搜索的结果: 5.2 开启Live updates 实时更新 我们如果调试的数据库数据,会不断变化刷新。...总的来说,database inspector就是一个专门的sqlite数据库管理工具。Android 帮我们实现了数据库的链接和通讯。 我们可以直接在studio中进行数据库的操作。
在 Kotlin 中使用 Android 的 Java API 时,您会迅速意识到这样的做法失去了 Kotlin 语言简单有趣的特点。...Studio 中的自动完成功能找到它们。...平台 API — core-ktx core-ktx 为来自 Android 平台的 API 提供了常用的 Kotlin 功能。...例如,您正在使用 SharedPreferences,当您想去更新一个值,不需要像使用 Java 一样执行 3 个调用,您只需要执行一个调用即可: /* Copyright 2020 Google LLC...和 commit() 不同,apply() 函数会将数据修改异步写入磁盘。
Android12 遵循了 M3 的 Dynamic Color 设计原则,系统可以从用户的壁纸中抓取颜色,然后色阶化应用到你开发的应用中,应用跟随主题的不同和变换颜色,千人千面。...Material3 Compose.M3 通过 ColorScheme 来自定义配色方案,支持了 Material You 的 color scheme 设计规范。...UI 呈现对应的主题颜色 Android Studio ---- Android Studio Arctic Fox 正式版发布 Ancroid Studio Bumblebe 进入 Beta 阶段 而最新的...这近几个版本的迭代中 Android Studio 面向如何提高开发者的编码和调试效率增加了一系列新功能。...此外,Android Studio 对模拟器进行了不少强化,模拟器模拟更多真实设备的使用场景,例如重力感应等。
在软件开发行业中找到一个Android开发的架构标准是相当复杂的。...View 在Android中,我们的视图的实现将对应于一个活动或一个片段(在示例/项目中是片段),但它可以是一个ViewModel,甚至是一个可视化组件。...Service 我们的服务将负责应用所有业务逻辑并协调不同的域服务,或者直接负责向应用程序提供/存储信息的存储库。...基础架构层(数据)也很容易测试,因为我们所要做的就是模拟服务器的响应,为此,我们将使用来自OkHttp的MockWebServer。 发展方向?...观察前端架构的演变,认为Android正在接近一个类似Redux的架构并不是不合理的。
引言 本文介绍了 Android Compose 的基本概念,探讨其状态管理、列表处理以及性能优化的关键技术,帮助读者更好地理解和运用这一强大的 UI 框架。...可组合性: 通过组合不同的组件来构建复杂的 UI。 工具支持: 完美集成至 Android Studio,提供实时预览和代码完成等功能。...当 ViewModel 更新这些 LiveData 对象的值时,与之相关的 UI 自动更新,反映出最新的状态。...5.4 性能测试与优化 在开发过程中,使用 Android Studio 的 Profiler 工具来监控应用的 CPU 和内存使用情况,确保没有性能瓶颈。...组件化: 通过可重用的组件,Compose 使得 UI 设计更加模块化,易于测试和维护。 集成工具: Android Studio 集成提供了无缝的开发体验,包括实时预览和代码自动完成。
架构库版本:1.0.0 Alpha 2 – June 2, 2017 LiveData 是一个数据持有者类,它持有一个值并允许观察该值。...不同于普通的可观察者,LiveData 遵守应用程序组件的生命周期,以便 Observer 可以指定一个其应该遵守的 Lifecycle。...LiveData 的转换 有时候可能会需要在将 LiveData 发送到观察者之前改变它的值,或者需要更具另一个 LiveData 返回一个不同的 LiveData 实例。...Lifecycle 包提供了一个 Transformations 类包含对这些操作的帮助方法。...ViewModel 可以轻松获取到 LiveData 并在它们上面定义转换规则。 创建新的转换 在应用程序中可能会用到十几种不同的特定转换,但是默认是不提供的。
Studio 中的自动完成功能找到它们。...core-ktx 为来自 Android 平台的 API 提供了常用的 Kotlin 功能。...和 commit() 不同,apply() 函数会将数据修改异步写入磁盘。...LiveData 很多 LiveData 的功能都是作为扩展函数实现的,比如: map https://developer.android.google.cn/reference/kotlin/androidx...软件包提供了两个简单的扩展函数: Flow.asLiveData()、LiveData.asFlow(),分别对 Flow 转换成 LiveData 以及将 LiveData 转换成 Flow 予以支持
多年来,反应式架构一直是Android的一个热门话题。它一直是Android会议上的一个永恒主题,通常都是用RxJava的例子来进行演示的(见底部的Rx部分)。...反应式编程是一种关注数据「如何流动」以及「如何传播」的范式,它可以简化构建应用程序的代码,方便显示来自异步操作的数据。 实现一些反应式概念的一个工具是LiveData。...这篇博文将帮助你避免陷阱,并使用一些模式来帮助你使用LiveData构建一个更加「反应式」的架构。...img 使用MediatorLiveData来组合数据的方法是在不同的方法中添加来源和设置值。...例如,当从一个Activity的一个实例导航到另一个实例时,新的实例可能会暂时收到来自前一个实例的数据。请记住,LiveData会将最新的值分派给新的观察者。
这意味着开发者需要根据生命周期的不同阶段,有针对性地管理组件状态,比如用于更新用户界面的可观察对象。...生命周期管理(Lifecycles)帮助开发者创建 “可感知生命周期的” 组件,让其自己管理自己的生命周期,从而减少内存泄露和崩溃的可能性。生命周期库是其他架构组件(如 LiveData)的基础。...了解更多 Lifecycles 相关内容: developer.android.google.cn/topic/libra… LiveData LiveData 是一款基于观察者模式的可感知生命周期的核心组件...直到关联的 Activity 或 Fragment 完全销毁时,ViewModel 才会随之消失,也就是说,即使在旋转屏幕导致 Fragment 被重新创建等事件中,视图数据依旧会被保留。...ViewModels 不仅消除了常见的生命周期问题,而且可以帮助构建更为模块化、更方便测试的用户界面。
此外,我们了解到表现层可以被分成不同的组件,承担不同的责任。...这是一个在Android社区相当成熟的惯例,但你会发现有一些文章有不同意见。有数百篇博客文章以不同的方式定义Presenter、ViewModel、MVP和MVVM。...当你想先发射一个初始值,然后再发射一连串的值时,这很有用。...然而,有一件重要的事情要记住:coroutine的取消是协作式的。 这意味着,如果调用的coroutine被取消了,你必须帮助Kotlin停止一个Job。...LiveData: Suspend transformation 比方说,你想对来自数据源的东西进行转换,但它可能是CPU密集型的,所以它是在一个suspend函数中。
简而言之,这个库可以帮助开发者更好地处理生命周期事件和配置更改时的数据持久性,同时还能帮助开发者创建更好的体系结构应用程序,并避免难以维护和测试的膨胀类。...2.1 Event 一个Event代表当Android 生命周期的对象的生命周期发生改变时候,会触发的一个生命周期事件(例如一个activity正在被恢复)。...3.2 observe() 当调用的LiveData的observe(LifecycleOwner owner, Observer observer)方法时,根据情况会有不同的处理。...④ postValue(T value):在子线程中给LiveData设置值。...同时ViewModel会在configuration 更改时自动保留数据。 ? 官方给的建议是将LiveData和ViewModel配合来使用。
领取专属 10元无门槛券
手把手带您无忧上云