关于jetpack:Jetpack架构演化初步运用flow附加经典案例

Jetpack架构演变:初步使用flow,附加经典案例在jetpack体系中 livedata的角色纯纯粹粹是个桥接器,DataSource中获取到数据,而后由viewmodel停止逻辑处理,最初被livedata.postValue到view层,唯一的价值是绑定了lifecycle, 只在页面活泼(start)的时候承受数据官网的一篇介绍能够参考:从 LiveData 迁徙到 Kotlin 数据流 - 掘金对于初学者来说使用lieveData的益处是足够简略和绝对平安引入flow次要因为以下几点: 具备更敌对的API,学习成本较低跟Kotlin协程、LiveData分离更严密,Flow可能转换成LiveData,在ViewModel中间接使用分离协程的作用域,当协程被勾销时,Flow也会被勾销,防止内存走漏flow库从属于kotlin, livedata属于Android, 托付Android平台的限度对于将来跨平台开展无利 【flow是个冷数据流】所谓冷流,即上游无消费行为时,上游不会产生数据,只需上游开始生产,上游才开始产生数据。而所谓热流,即无论上游是否有消费行为,上游都会本人产生数据。下边通过一个经典场景粗疏描绘下flow(单纯的flow,而stateFlow会在后续章节中解说)的使用案例:一个菜谱利用app中,我想在一个页面展现一个列表(recyclerview) ,此列表的每个item是个子列表,子列表顺次为打算菜谱列表;珍藏菜谱列表;依据食材抉择的菜谱列表;依据食材获取用户偏好的菜谱列表; 四个子列表需要四个接口来获取,组装好起初刷新最初的列表其中每个列表都有可能是空,是emptylist的话这行就不浮现了,因为四个接口数据量大小不同,所以不会同一时间返回,同时又要保障这四个子列表按请求的次序来展现。思路:设计数据结构,最外层的data: data class ContainerData(val title : String , val list: List)复制代码其中Recipe实体是每个菜谱 data class Recipe(val id: String, val name: String, val cover: String, val type: Int, val ingredients: List? = mutableListOf(), val minutes: Int, val pantryItemCount : Int )复制代码模仿四个恳求为: val plannlist = Request.getPlannlist()val favouritelist= Request.getFavouritelist()... 以此类推假如依照请求四个恳求返回秩序不同,同时请求在列表中按次序浮现,假如实现?计划一:能够等待四个恳求都返回后而后组装数据,刷新列表能够利用协程的await办法: val dataList = MutableLiveData()viewModelScope.launch {// plannerval plannerDefer = async { Request.getPlannlist() }// favouriteval favouriteDefer = async { Request.getFavouritelist() }val plannerData = plannerDefer.await()val favouriteData = favouriteDefer.await()....省略后两个接口val list = listof(Container("planner" , plannerData),Container("favourite" , favouriteData),...)dataList.postValue(list)}复制代码await() 办法是挂起协程,四个接口异步恳求(非次序),等最初一个数据恳求返回后才会执行下边的步骤而后组装数据利用liveData发送,在view中渲染 ...

April 1, 2022 · 1 min · jiezi

关于jetpack:2022全网最全Android-jetpack-Compose开发应用指南从理论基础到项目实战

背景Jetpack的呈现次要是为了解决Android利用开发普遍存在的凌乱、参差不齐的问题。晚期的Android开发,因为技术的不断更新,Google把精力都放在了Android零碎自身上,Android开发都是间接应用四大组件去做,写起来性能和体验都不是很敌对。但也正因而呈现了很多优良的开源库去解决这些问题。 然而随着这几年Android零碎趋势稳固,Google也慢慢开始重视利用的应用体验,这就须要进步开发者的利用开发品质,于是之前Google推出的AAC就演进成了当初的Jetpack。 Jetpack的呈现很好地解决了目前Android开发的凌乱局面,提供了很好的行业标准,同时也在业内失去宽泛的认可。 Jetpack的分类首先上一张官网的图片,来直观感受一下分类。 Android Jetpack组件的作用是什么?Navigation:一个用于治理Fragment切换的工具类,可视化、可绑定控件、反对动画等是其长处。Data Binding:不用说,都晓得,减速MVVM的创立。Lifecycle:他是咱们可能解决Activity和Fragment的生命周期的重要起因,在AndroidX的Fragment和Activity曾经对Lifecycle提供了默认反对。ViewModel:当做MVVM的ViewModel层,并具备申明周期意识的解决和UI相干的数据。LiveData:同RxJava的作用一样,对数据进行监听,长处就是无需解决生命周期、无内存透露等。Room:弱小的ORM数据库框架。Paging:易于应用的数据分页库,反对RecyclerView。WorkManager:灵便、简略、提早和保障执行的后台任务解决库。你可能抉择Android Jetpack的起因以下可能是你会抉择Android Jetpack的起因: 一起应用更不便:因为Android Jetpack组件中的很多库都对其余库提供了反对,比方Room和Paging就对LiveData提供了反对。向后兼容:基本上每个组件都对低版本提供了反对。反对RxJava:因为RxJava弱小的生态环境,简直和数据相干的组件都对RxJava提供了反对。缩小代码量:以Data Binding + ViewModel + LiveData或RxJava构建的MVVM模式可能显著缩小代码量,比拟平时应用的MVP模式也会更加不便,无需被动更新UI。无需捆绑:Android Jetpack系列组件能够无需捆绑应用,你如果只想用外面的单个库,那么就能够仅仅依赖一个库。Android Jetpack要学吗?学,必定要学,Android Jetpack于谷歌而言,这是他们重新整理和对立安卓生态环境信心的体现,Android Jetpack所展示的内容,也是谷歌想拓展和保护的方向。于长期苦恼于第三方库抉择的宽广Android开发者而言,这是谷歌为咱们提供的一盏明灯。 兴许,Android Jetpack系列的局部库还没成熟到成为你工作的第一抉择,然而,深刻学习Android Jetpack组件会为你提供与谷歌大佬深刻交换的机会,为你日常的开发带来一些想法。 Android 市场已今非昔比。在过来,迫于招人的压力,应试者只需理解四大组件、视图、网络申请,即可谋得一份称心的工作。 现如今面向标准化开发已成事实,Jetpack 架构组件及标准化开发模式的确立,意味着Android开发已步入成熟阶段。纯熟应用Jetpack也成为了招聘要求中必不可少的一项: 如何疾速把握Jetpack?Jetpack Compose 一个残缺的、全新的框架,学习起来的确存在一些难度;为了帮忙大家更好地学习Compose,早日实现更加高效、高级的UI界面开发,这里给大家分享《Jetpack架构组件从入门到精通》和《Android Jetpack Compose开发应⽤指南》从实践根底到我的项目实战,心愿能帮忙到有须要的小伙伴,点击这里查看全部内容《Jetpack架构组件从入门到精通》1.什么是Jetpack2.Android Jetpack - Navigation3.Android Jetpack - Data Binding4.Android Jetpack - ViewModel & LiveData5.Android Jetpack - Room6.Android Jetpack - Paging7.Android Jetpack - WorkManger8.Android Jetpack架构组件之Lifecycle9.Android Jetpack Compose最全上手指南10.Android Jetpack架构组件–App Startup11.Android Jetpack最新更新组件介绍12.Android Jetpack我的项目实战(从0搭建Jetpack版的WanAndroid客户端) 《Android Jetpack Compose开发应⽤指南》第⼀章 初识JetpackJetPack是什么JetPack和AndroidXAndroidX的迁徙 第⼆章 Compose的设计原理和基本概念JetPack Compose 环境搭建JetPack Compose 新个性和组件依赖JetPack Compose 编程思维总结 ...

March 28, 2022 · 1 min · jiezi

关于jetpack:Jetpack探索之旅Jetpack-Compose开发应用指南从入门到精通

Jetpack是谷歌在I/O 2018大会上推出,是一套库,工具和指南,旨在帮忙开发者更轻松的开发优质利用。这些组件可帮忙开发者遵循最佳做法、解脱编写样板代码的工作并简化简单工作,以便开发者将精力集中放在所需的代码上。 Jetpack蕴含与平台API解除捆绑的androidx.软件包库。这意味着,它能够提供向后兼容性,且比Android平台的更新频率更高,以此确保开发者始终能够获取最新且最好的Jetpack组件版本。 jetpack长处减速开发:组件能够独自采纳(不过这些组件是为协同工作而构建的),同时利用 Kotlin 语言性能帮忙您进步工作效率。打消样板代码:Jetpack 可治理繁琐的Activity(如后台任务、导航和生命周期治理)。构建高质量的弱小利用:Jetpack 组件围绕现代化设计实际构建而成,具备向后兼容性,能够缩小解体和内存透露 Compose 出世的目标:就是为了从新定义 Android 上 UI 的编写形式,为了「进步 Android 原生的 UI 开发效率,让 Android 的 UI 开发方式能跟上时代的步调」。 对于宽广Android开发者而言,Compose 是 Android UI 的将来,现阶段你能够不会,然而如果将来你会持续在 Android 平台的话,你就必须会! 这里给大家分享一份由谷歌大佬亲自整顿的一份《Jetpack Compose-从入门到精通》PDF学习手册,外网分享找到的,我本人整顿尝试翻译了下,有须要的敌人请点击我的GitHub第一章 初识Jetpack Compoese1.为什么咱们须要一个新的UI 工具?2.Jetpack Compose的着重点 减速开发 弱小的UI工具 直观的Kotlin API 3.API 设计 4.Compose API 的准则 一切都是函数 顶层函数(Top-level function) 组合优于继承 信赖繁多起源 5.深刻理解Compose Core Foundation Material 6.插槽API[](https://blog.csdn.net/m0_5961...)第二章 Jetpack Compose构建Android UI1.Android Jetpack Compose 最全上手指南 Jetpack Compose 环境筹备和Hello World 布局 应用Material design 设计 Compose 布局实时预览 …… 2.深刻详解 Jetpack Compose | 优化 UI 构建 Compose 所解决的问题 Composable 函数分析 申明式 UI 组合 vs 继承 封装 重组 …… 3.深刻详解 Jetpack Compose | 实现原理 @Composable 注解意味着什么? 执行模式 Positional Memoization (地位记忆化) 存储参数 重组 …… ...

February 11, 2022 · 1 min · jiezi

关于jetpack:Jetpack-Compose-现已支持-Material-You-2021-Android-开发者峰会

作者 / 开发者关系工程师 Nick Butcher 上个月,Android 开发者峰会 为 Jetpack Compose 带来了许多 激动人心的更新,包含 Google 的新设计语言 Material You,Compose 现已对其提供反对。若您错过了某些内容,能够通过本文简要理解精彩内容,也能够 点击这里 查看精彩内容视频。 新版本: Jetpack Compose 1.1 Beta 版和 compose-material 3咱们公布了 Jetpack Compose 1.1 Beta 版。这意味着 1.1 中的新 API 现已稳固,能够为您提供新的性能并带来性能晋升。1.1 新增了一些性能,比方通过优化的焦点解决、触摸目标值、"ImageVector" 缓存和对 Android 12 拉伸滚动的反对。Compose 1.1 还让许多之前的实验性 API 过渡到了稳固阶段,并反对新版 Kotlin。咱们曾经更新了 示例、Codelab 和 Accompanist 开发库,以便与 Compose 1.1 搭配应用。 咱们公布了 compose-material 3。这是应用 Jetpack Compose 构建 Material You UI 的全新工件,可提供更新的 组件 和 色彩零碎,其中包含对 动静配色 的反对,因而开发者能够依据用户的壁纸创立个性化的调色板。这是咱们的首个 Alpha 版,欢迎您与咱们 分享反馈,咱们会持续增加新性能并迭代 API。欢迎您返回全新的 m3.material.io 网站,理解对于 Material Design 3 的更多信息,找到有助您应用动静配色进行设计和构建的工具,比方 Material Theme Builder。点击这里 观看视频理解更多具体内容。 ...

November 29, 2021 · 1 min · jiezi

关于jetpack:Jetpack-寻英贴发起寻找-50-名-Jetpack-爱好者

Jetpack 寻英贴 背景1. Jetpack 的呈现原因和价值相熟 Jetpack 的开发者都晓得,Jetpack 是 Google 为了解决咱们在 Android 日常开发中遇到的一些痛点而推出的一套组件。比方: 为了解决因为屏幕旋转等配置变动引起 Activity 销毁重建而引发的数据失落或解体问题,推出了 Lifecycle 组件。为了解决依赖注入 Dagger 框架应用技术门槛高的问题,推出了 Hilt。为了解决后台任务治理的问题,推出了 WorkManager。为了解决SQLite数据库应用便利性和门槛的问题,推出了ORM框架 Room,代替 GreenDao。为了解决 Fragment 之间导航的问题,推出了 Navigation。为了解决传统 MVC、MVP 模式下 UI 更新和数据源之间的同步问题,推出了 Databinding+Viewmodel+Livedata的 MVVM 架构模式,能够很不便的实现双向绑定和动静更新。Kotlin 协程与架构组件一起应用,进一步简化了咱们异步工作的解决。Jetpack 呈现的次要意义有两个: 简化 Android 开发者的工作,让开发者更不便、老本更低的构建利用。通过一些举荐的、标准化的做法,便于构建优质的利用。为了介绍和推广 Jetpack 的应用,Google 官网还推出了将这些架构组件组合在一起应用的 Demo 利用 Sunflower,Jetpack 相干的官网技术文档当初也比较完善了。比方官网举荐的利用架构如下图: 2. 那咱们还有必要做什么吗?然而,有一点比拟有意思的是,「通常官网的货色在理论的工程实际中,都会有一些特定的需要没法很好的满足」。 为了解决这些痛点,有些开发者就会去造一些很好用的轮子开源进去,而后 Google 缓缓排汇一些好的设计,融进本人的体系中,推出官网的解决方案。这也很失常,也算软件开发中常见的状况。比方 okhttp、ButterKnife、GreenDao、Dagger,都是这么过去的,Google 也在一直的迭代和优化。 那这次的 Jetpack 也一样,最近我在我的项目中应用 Room 和 WorkManager 的时候就遇到了一些问题和一些纳闷。也是间接导致这篇文章和这个流动产生的起因。 3. 我和 Jetpack 的结缘我开始晓得 Jetpack 和 Kotlin 还算是比拟早的,前几年也加入过几次深圳线下官网推广 Jetpack 和 Kotlin 的技术论坛,有幸见到了 Kotlin 语言的技术布道师 Hadi Hariri,有过短暂的交换。然而始终也没有很深的钻研,更多处于理解和关注它的演进的层面。 ...

July 5, 2021 · 1 min · jiezi

关于jetpack:Jetpack-Compose系列Text组件花式使用

对于用户界面而言,文本是最根底而又外围的内容,在传统的 Android Native 开发中,须要用一个TextView来显示一个文本。在Jetpack Compose 中,提供了Text可组合函数(即组件,前面的文章都会称其为“组件”),可更轻松的显示文本。在本文中,将带大家一起摸索Text组件的各种用法。 Text 属性介绍在Jetpack Compose 中,组件是一个非凡的Kotlin 函数,因而Text其实也是一个函数,而它提供了很多参数来配置文本的显示外观。这些参数就是组件的属性。看一下Text组件有哪些属性: @Composablefun Text( // 显示的文本字符串 text: String, // 修改器,能够配置文本的大小及显示外观 modifier: Modifier = Modifier, // 文本的色彩 color: Color = Color.Unspecified, // 文本的字号大小 fontSize: TextUnit = TextUnit.Unspecified, // 文字款式 fontStyle: FontStyle? = null, // 文字粗细 fontWeight: FontWeight? = null, // 文本字体 fontFamily: FontFamily? = null, // 文字间的间距 letterSpacing: TextUnit = TextUnit.Unspecified, // 文字增加装璜,能够增加上划线、下划线、中划线 textDecoration: TextDecoration? = null, // 文本的对齐形式 textAlign: TextAlign? = null, // 每一行的行高 lineHeight: TextUnit = TextUnit.Unspecified, // 文本溢出的显示成果 overflow: TextOverflow = TextOverflow.Clip, // 是否主动换行 softWrap: Boolean = true, // 最多显示几行 maxLines: Int = Int.MAX_VALUE, // 计算布局时的回调 onTextLayout: (TextLayoutResult) -> Unit = {}, // 款式 style: TextStyle = LocalTextStyle.current) { ...}Jetpack Compose 中,很多中央都用到了Kotlin 的个性,比方这里,就用到Kotlin的默认参数,Text 组件除了第一个参数text,其余都有默认值,也就是应用的时候能够不传,然而如果传多个参数时,肯定要加参数名。比方,设置大小: ...

April 26, 2021 · 8 min · jiezi

关于jetpack:Jetpack-Compose-系列环境搭建和工具介绍

前言又有好久没更新原创文章了,因为换工作的起因,年后这2个月,很少有工夫来写文章,都在温习和筹备面试,也拿到了几个不错的offer。当初新工作尘埃落定,趁这几天的闲暇工夫,把拖更的文章补起来。去年年终总结的时候,给本人往年定的几个学习和写文章的方向是Kotlin、Jetpack、和Compose。因为3月Jetpack Compose beta版的正式公布,加上Google官网的4周挑战游戏,为Compose带来了不少热度。我也是始终十分看好Jetpack Compose的,当初的确也是学习Jetpack Compose 的一个好时机,因而,明天就率先开启-Jetpack Compose系列。 Jetpack Compose 是什么?Jetpack Compose是Google推出的一个新的UI工具包,旨在帮忙开发者更快、更轻松地在Android 平台上构建Native利用。Jetpack compose是一个申明式的UI框架,它提供了现代化的申明式Kotlin API(取代Android 传统的xml布局),可帮忙开发者用更少的代码构建好看、响应迅速的应用程序。 这段官网的形容不是很好了解,其中有一个词:申明式 ,那么什么是申明式? 要搞懂什么是申明式,咱们先看看另一个概念:命令式。这也是咱们Android Native 开发始终应用的形式。如果有这样一个场景:咱们要在界面上显示一个文本,用 **命令式**和申明式实现有和区别? 命令式形式: 1、首先须要一个xml文件,外面有一个TextView ... <TextView android:id="@+id/my_text" android:layout_width="wrap_content" android:layout_height="wrap_content"/>2、通过findViewById获取到TextView控件TextView textView = findViewById<TextView>(R.id.my_text);3、通过setText()更新数据,显示到界面textView.setText(content)申明式形式: 而如果用Compose的申明式的形式,如何实现?很简略,一步到位: @Composablefun ShowText(content: String){ Text(text = content)}为什么第一种形式是命令式,第二种形式是申明式?次要体现在界面更新上,命令式下:数据更新时,Java代码手动调用xml组件援用来更新界面,也就是Java代码命令xml界面更新,这就是命令形式。而申明式呢?只形容界面,当数据状态更新时,自动更新界面,这就是申明式。 简短总结: 命令式是操作界面申明式是形容界面除了Jetpack Compose ,Flutter,React-Native,Swift-UI 都是申明式的,这也是当初的一种趋势。 Jetpack Compose 开发环境筹备工欲善其事,必先利其器,Android Studio对Jetpack Compose 有很好的反对,为了更好的体验,咱们下载最新的Android Studio 预览版 Canary版本,最新版为Arctic Fox(2020.3.1) Canary 14,下载地址为:https://developer.android.com... 下载之后,间接装置即可,如果是Mac版本的话,下载完,解压就能够间接应用。个别的话,倡议小伙伴们装2个版本的Android Studio,一个是预览版,用来摸索和尝试一些新技术和新性能,一个稳定版,用来日常的开发。反正我是这样的。 Android Studio 筹备好之后,咱们就能够开始Jetpack Compose 我的项目创立了。 首先点击 Projects -> New Project 导航到模板抉择界面,这个界面多了一个Empty Compose Activity 模板,就抉择这个,它会默认帮咱们配置好Jetpack Compose 须要的一些配置和库。 ...

April 25, 2021 · 3 min · jiezi

Jetpack系列应用内导航的正确使用方法

今天小编要分享的还是Android Jetpack库的基本使用方法,本篇介绍的内容是Jetpack Navigation组件,让我们一起学习,为完成年初制定的计划而努力吧! 组件介绍导航,是指提供用户在应用程序中的不同内容之间进行浏览、退出的交互功能。如我们在Android手机上常常用到的物理/虚拟返回按键、桌面(Home)键、历史记录(Recent)键、ActionBar 返回键等等。 Jetpack库中的Navigation组件由以下三个关键部分组成:导航图:一种XML资源,包含所有与导航有关的信息,如Fragment配置、跳转行为/方向、动画等等;NavHost:一个空容器,用于显示导航图中的目的地,项目中需要包含一个实现NavHost接口的默认NavHostFragment容器;NavController:在NavHost容器内管理应用程序的导航行为。当用户在应用程序中切换界面时,NavController协调容器中的目标内容交换。优点使用导航组件有很多好处:能够处理Fragment切换能够正确处理向上、返回的默认行为提供动画和过渡的标准化资源提供深层链接功能包含导航UI模式,例如抽屉导航和底部导航,开发者无需进行额外的处理保护导航之间数据传递的类型安全提供ViewModel支持,多Fragment间可共享ViewModel数据提供AndroidStudio图形化查看/编辑导航功能(>= 3.3版本)简单使用下面是一个使用导航组件进行开发的Demo运行效果: 从实现效果上来看,整个应用程序共有8个界面,分别是主界面、注册界面、排行界面、用户匹配、游戏界面、失败界面、成功界面、用户界面。 主要涉及的逻辑有:打开应用进入主界面主界面提供两个功能,一个开始注册;另一个进入排行界面注册界面提供开始匹配功能用户匹配提供开始游戏功能游戏界面操作后会进入成功或失败界面游戏成功界面可进入排行界面或匹配界面继续游戏游戏失败界面可返回到匹配界面重试排行界面可进入用户界面查看信息好了,整个应用界面之间涉及的主要逻辑都已经理清楚了,开始导入Jetpack导航组件。 环境配置使用AS 3.3及以上版本添加依赖项支持implementation deps.navigation.fragment_ktximplementation deps.navigation.runtime_ktx//implementation "androidx.navigation:navigation-fragment-ktx:2.1.0"//implementation "androidx.navigation:navigation-ui-ktx:2.1.0"导航图导航图的创建是整个应用的核心所在,它描述了所有行为的触发顺序。通过AS Design功能可看到整个应用的界面并且覆盖所有界面可能执行的顺序。 使用AndroidStudio创建导航图时,选择Resource type为navigation,默认会创建res/navigation目录,并将资源文件放置于此目录下。 以title_screen主界面配置为例,来看一下xml的构成: <navigation ... //指定了启动当前导航时显示的界面 app:startDestination="@+id/title_screen"> <fragment android:id="@+id/title_screen" android:name="com.example.android.navigationsample.TitleScreen" android:label="fragment_title_screen" tools:layout="@layout/fragment_title_screen"> //每一个action都代表了界面上提供跳转到其他界面的行为 <action android:id="@+id/action_title_screen_to_register" app:destination="@id/register" app:popEnterAnim="@anim/slide_in_left" app:popExitAnim="@anim/slide_out_right" app:enterAnim="@anim/slide_in_right" app:exitAnim="@anim/slide_out_left"/> //设置了动画和过渡效果 <action android:id="@+id/action_title_screen_to_leaderboard" app:destination="@id/leaderboard" app:popEnterAnim="@anim/slide_in_left" app:popExitAnim="@anim/slide_out_right" app:enterAnim="@anim/slide_in_right" app:exitAnim="@anim/slide_out_left"/> </fragment>.../> 在导航图配置时,有四个需要注意的属性: popUpTopopUpToInclusivelaunchSingleTopdeepLink//launchSingleTop代表启动当前fragment后,会栈顶复用<action android:id="@+id/action_register_to_match" app:destination="@id/match" app:enterAnim="@anim/slide_in_right" app:exitAnim="@anim/slide_out_left" app:launchSingleTop="true" app:popEnterAnim="@anim/slide_in_left" app:popExitAnim="@anim/slide_out_right" />//deepLink及深度链接,应用可通过Uri方式启动当前Fragment://holder.item.findNavController().navigate(Uri.parse("https://www.example.com/user/Flo"))//此种方法为静态配置,动态配置方法请参考官方说明文档<fragment android:id="@+id/user_profile" android:name="com.example.android.navigationsample.UserProfile" android:label="fragment_user_profile" tools:layout="@layout/fragment_user_profile"> <argument android:name="userName" android:defaultValue="name"/> <deepLink app:uri="www.example.com/user/{userName}" /></fragment><action android:id="@+id/action_in_game_to_resultsWinner" app:destination="@id/results_winner" app:popUpTo="@+id/match" app:popUpToInclusive="false" app:popEnterAnim="@anim/slide_in_left" app:popExitAnim="@anim/slide_out_right" app:enterAnim="@anim/fade_in" app:exitAnim="@anim/fade_out"/>//popUpTo属性表示堆栈返回到某个界面,其后的栈数据清空//popUpToInclusive属性为true表示回到指定界面时,界面栈中是否还包括当前界面//(如果栈中已经包含了指定要跳转的界面,那么只会保留一个,不指定则栈中会出现两个//界面相同的Fragment数据)AndroidManifest与布局文件配置如果要使用导航组件的深度链接功能,则需要在AndroidManifest中声明导航图,以便深度链接功能正常使用。 ...

October 7, 2019 · 1 min · jiezi