Jetpack
文章平均质量分 93
沈页
这个作者很懒,什么都没留下…
展开
-
告别XML,Android新声明式UI框架《Jetpack Compose入门到精通》最全开发指南
Jetpack Compose是Android的新声明式UI框架。长期以来, Android 开发人员习惯于使用带有状态视图的xml编写UI,这些状态视图通过逐步浏览视图层次结构进行更新。使用Jetpack Compose, UI 是通过使用KotinQ 函数以无状态方式编写的。可组合函数使用注解进行@Composable注解。可组合函数必须使用此注解进行注解,通知编译器此函数将UI添加到View Hierarchy。原创 2022-12-16 21:07:04 · 1404 阅读 · 0 评论 -
3年以上Android开发者,关于学习 Compose,我的经验总结和建议
又到一年快结束的日子了这一年里经历了裁员,跳槽,跑路,也当过面试官面试一些同学。经历过攻守的角色转换后,沉下心,回顾过往,不由得发出感叹,今年卷的不行。无论是裁员还是跳槽,都存在核心的一点,自身的技术核心是否达到公司的业务要求?就像现在用的声明式UI,企业都想提高开发效率,而Compose正好能直观解决这类问题。那么问题来了:你要学Compose吗?或者更确切地问:你要现在就开始学 Compose 吗?世界在变化,公司也在变化,技术也时刻在变化。原创 2022-12-07 14:46:07 · 1116 阅读 · 0 评论 -
谷歌内部学习分享 Android Jetpack Compose开发应用指南,赶紧码住
Jetpack Compose 是可以大幅简化 Android 界面开发的现代工具包,现已应用于 Twitter、Airbnb 和 Google Play 等数千款全球应用中。通过 Jetpack Compose,您只需要使用并维护少量代码,同时利用直观且功能强大的 API,就可以在为用户构建引人入胜的体验时充分利用 Android 的优势,进一步加速应用开发。原创 2022-10-11 15:43:09 · 741 阅读 · 0 评论 -
Jetpack结合MVVM可以开发出一个多优秀的APP?
Android经历十多年的发展,技术越来越成熟,谷歌一直致力于安卓生态环境的搭建。为了方便广大安卓开发者,让App研发更简单、易于上手,谷歌在2018年推出了Jetpack。2019 年中,Google 在 I/O 大会上公布了 Android 最新的 UI 框架:Jetpack Compose。而在今年2021年终于正式发布。Compose 完全使用 Kotlin 构建,可利用其优秀的语言特性提供功能强大、简洁且直观的 API。例如,借助协程,我们可以编写更简单的异步 API,如描述手势、动画或滚原创 2022-09-05 16:52:05 · 640 阅读 · 0 评论 -
聚焦 Android 11: Jetpack,针对性解决Jetpack组件问题
自从Google在2018年推出Jetpack之后,它就成为了Android未来发展的指向标,也是Android开发工程师面试必问的一项技术,如果搞不定Jetpack,很可能就与大厂失之交臂。目前大部分APP已经开始使用AndroidJetpack。通过AndroidJetpack可以让我们的BUG减少,以及在框架的封装,让开发者把更多的精力放在业务逻辑以及用户体念上。...原创 2022-07-14 20:33:28 · 215 阅读 · 0 评论 -
Jetpack Compose 实现完美屏幕适配
“受益”于目前 Android 手机各类屏幕尺寸长短不定、宽高比例大小不一的现状,屏幕适配 依然是 Android 应用开发时绕不开的问题我们在日常开发中使用得最多的尺寸单位应该是 dp 了,Google 也推荐开发者尽量使用 dp 作为单位值,因为系统会根据屏幕的实际情况来完成 dp 和 px 之间的对应换算,使得同个 dp 值的显示效果在不同手机屏幕上不会相差太大。但直接使用 dp 值后的最终显示效果只能说不会和设计稿相差太远,想要做到完美适配还远远不够举个例子。我们在进行 UI 开发时,一般都是按照设转载 2022-06-29 21:12:42 · 1551 阅读 · 1 评论 -
Jetpack Compose 实现一个图片选择框架
知乎的 Matisse 应该蛮多 Android 开发者有了解过或者是曾经使用过,这是知乎在 2017 年开源的一个 Android 端图片选择框架,其颜值在现在看来也还是挺不错的可惜近几年知乎官方已经不再对 Matisse 进行维护更新了,上一次提交记录还停留在 2019 年,累积了 400 个 issues 一直没人解答,很多高版本系统的兼容性问题和内部 bug 也一直得不到解决。我反编译了知乎的 App,发现其内部还保留着 Matisse 的相关代码,所以知乎应该不是完全废弃了 Matisse,而只是转载 2022-06-17 15:55:58 · 797 阅读 · 1 评论 -
【Android 进阶】完美插件化实现,compose 开发动态加载
温度爬升,蚊虫也开始猖狂了起来。燥热的空气里,穿梭着几只置身死于度外的飞虫,全然没有在意我这个执掌着生死的巨人,让人钦佩。一直在小公司徘徊,在小团队里面摸爬滚打。面试中往往会被面试官对于一些平时用不到的技能细致追问,想要跳高只能开始学习工作中用不到的技能,不然就会陷入死循环怪圈所以只能自己偷偷默默学习,以demo当作经验。 :在类加载器中,指的是当一个类加载器收到了类加载的请求的时候,他不会直接去加载指定的类,而是把这个请求委托给自己的父加载器去加载。 只有父加载器无法加载这个类的时候,才会由当前这个加载器转载 2022-06-10 21:04:24 · 794 阅读 · 0 评论 -
对于 Android 开发来说似乎“更头痛”的是 Flutter 与 Compose “同出一爹”,看完这你就明白该如何选择
纵观Android发展至今,十余年间Google一直在针对不同的主题对它进行整改补强,其目的就是为了给开发者们一个更加舒适高效的开发平台,更好地实现各种功能。然而在 UI构建方面,最初的那一套UI体系基本还是沿用至今,基本没有什么改变。就现在的发展趋势来说,传统的UI架构让很多开发者表示苦不堪言:UI的构建需要 大量的代码,写个自定义View需要实现测量、布局,响应用户行为需要满篇的Listener事件,与此同时,还得配合上XML自定义属性,可以说是 繁琐至极。而且从现有的代码体量来说,优化重构基本是天方原创 2022-05-06 20:59:21 · 2103 阅读 · 0 评论 -
手写框架?So Easy带你从0手撸一个RxJava
前言RxJava从几年前开始流行,以其链式风格的调用和强大的操作符而闻名于世。当然,最重要的是异步切换简单到了令人发指的地步。但是,凡事都有两面性。RxJava的上手难度也是特别陡峭的,而且经常会遇到团队里其他人对于RxJava的掌握不是很熟练。这一切的根源,都来源于它的设计思想,事件驱动型编程。什么?看不懂?没关系,接下来我一行源码也不会贴出来,让你自己就能手撸一个RxJava。为什么不贴源码?说句实话,我个人看技术文,最讨厌的就是大篇幅的贴源码,这种文章我看了只会觉得恶心。源码就在那里,我自原创 2022-01-04 22:33:07 · 294 阅读 · 1 评论 -
【Jetpack-Navigation】想去哪就去哪,Android世界的指南针
前言androidx Navigation 组件是 Android 中应用内导航的官方库很多人不喜欢 Navigation 因为其设计不符合开发者的预期,它在管理「平级界面」时来回切换会导致平级的 fragment 重建。网上针对这一问题有一个 重写 Navigator 的方案,大多数人会简单地认为 Navigation 无法保存 fragment 状态是因为使用了 replace(曾经的我也这样认为)本文的内容为 Navigation 的职能边界,简单使用,高阶使用技巧(例如同一 activity.原创 2021-12-31 17:03:46 · 1859 阅读 · 2 评论 -
不做跟风党,LiveData,StateFlow,SharedFlow 使用场景对比
作者Flywith24Android 常用的分层架构Android 中加载 UI 数据不是一件轻松的事,开发者经常需要处理各种边界情况。如各种生命周期和因为「配置更改」导致的 Activity 的销毁与重建。「配置更改」的场景有很多:屏幕旋转,切换至多窗口模式,调整窗口大小,浅色模式与暗黑模式的切换,更改默认语言,更改字体大小等等因此普遍处理方式是使用分层的架构。这样开发者就可以编写独立于 UI 的代码,而无需过多考虑生命周期,配置更改等场景。 例如,我们可以在表现层(Presentatio.原创 2021-12-14 16:52:36 · 3786 阅读 · 1 评论 -
Android启动那些事儿,从头到尾拎一遍~
前言作为一个应用工程师,除了写一些业务代码,性能优化也是我们需要关注的点!如果想要去做启动优化,那么去了解启动过程就是一个绕不过去的坎儿。那么除了关于启动过程的那些代码,我们还应该去知道什么呢?一、多进程那些事儿在大家很早学习 Android 的时候,想必就知道,每一个 Android App 就代表着一个进程。1. 为什么要开启进程?为什么要开启一个新的进程呢?在 Linux 中,线程和进程可没多大区别,内核并没有给线程准备特别的调度算法或者特殊的数据结构,相反,线程被视为一个与其他进程原创 2021-12-09 17:25:19 · 1826 阅读 · 0 评论 -
你确定你的Glide不会发生内存泄漏吗?
最近正在阅读Glide源码,今天我们要研究的部分是Glide RequestManager 生命周期管理。 本来这个也是这篇文章应该是Glide生命周期管理。但是在源码阅读中我发现原来我以前的项目对于Glide的使用存在着一些内存泄漏的可能,因此临时决定更改了文章的名字,希望能够引起大家的重视。这个是我们的主界面样式通过最下面的一排选项卡,控制主界面的一级fragment ,一级Fragment下面又有若干的子Fragment,fragment又包含一些其它的View。以RecyclerView举例,原创 2021-12-07 16:57:19 · 1519 阅读 · 0 评论 -
Jetpack Navigation 真香预警
1. Navigation到底该如何正确的使用相信大家对 Navigation都有所耳闻,我不细说怎么用了,官方的讲解也很详细。我是想说一下到底该如何更好的使用这个组件。这个组件其实是需要配合官方的MVVM架构使用的,ViewModel+LiveData结合才能更好的展现出Navigation的优势。在官方的讲解示例中没有用到ViewModel和LiveData,官方只是演示了Navigation怎么用怎么在页面之间传值,和这个组件的一些特性之类的。但真正用好还是要结合ViewModel和LiveD.原创 2021-12-03 16:14:18 · 1909 阅读 · 0 评论 -
MotionLayout的高级玩法
前言最近写业务的时候遇到一个带有轮播的界面在交互效果还定稿的时候,大佬同事建议轮播样式可以考虑 MotionLayout 中的 Carousel, 这个组件就是为轮播而生。学习完发现 MotionLayout 确实好用,用同事的话来说,就是让世界没有难做的动画。MotionLayout 的思路非常简单,使用 ConstraintLayout 的写法,定义动画开始的一帧和动画结束的一帧(当然我们也可以加入更多帧,在动画的过程中),在事件触发以后,会自动帮我们处理好动画。不过,本文的重点可不是学习原创 2021-12-02 15:25:24 · 2218 阅读 · 1 评论 -
Android面试:说一下 LiveData 的 postValue ?与SetValue有什么区别?连续调用会有什么问题?为什么?
众所周知,程序员面试的时候,很多面试官喜欢会就一个问题不断深入追问。例如一个小小的 LiveData 的 postValue,就可能会问出一连串问题:postValue 与 setValuepostValue 与 setValue 一样都是用来更新 LiveData 数据的方法:setValue 只能在主线程调用,同步更新数据postValue 可在后台线程调用,其内部会切换到主线程调用 setValueliveData.postValue("a");liveData.setValue(原创 2021-06-10 16:22:08 · 5824 阅读 · 2 评论 -
还在一个模块打天下嘛?你知道引入Jetpack架构后,你的App会发生哪些奇妙的变化吗?
前言上篇文章我给大家分享了我对Android架构的理解,从思想层面去讲述架构的演进过程。很多小伙伴读完后拍手叫好,表示还想听我讲一下对Jetpack 架构的看法,本着帮人帮到底的精神,今天我将再次动笔 尽量从本质上讲清楚Jetpack 架构存在的意义,以及解决的问题。知识储备:需要对Lifcycle、LiveData、ViewModel、DataBinding有基本了解作者Bezier目录1.1 为什么要做生命周期绑定?1.2 Lifecycle解决了哪些问题?2.1 观察者模式的优点有哪.原创 2021-05-06 14:43:00 · 338 阅读 · 9 评论 -
【Android Jetpack高手日志】ViewModel 从入门到精通
背景上一篇介绍了 Android Jetpack 组件 LiveData,LiveData是在Lifecycle 的帮助下,实现了生命周期管理的一致性,将数据变更的通知控制在生命周期活跃状态 STARTED、RESUMED(注意这是Lifecycle 中的 State)时进行通知,该通知成为数据的唯一可信来源,也就是视图获取数据的唯一入口。LiveData 经常和 ViewModel 一起配合使用。定义下面我们来介绍下一个 Android Jetpack 的下一个组件 ViewModel,先来看官方.原创 2021-04-28 10:19:57 · 1589 阅读 · 13 评论 -
【Android Jetpack高手日志】LiveData 从入门到精通
背景上篇介绍了 Android Jetpack 的基础组件 Lifecycle,它是生命周期感知型组件,实现生命周期管理的一致性,在内部进行了统一的生命周期状态管理,可以很方便的提供给其他的组件(比如 LiveData,ViewModel)使用,同时其他类还能够通过实现 LifecycleObserver 接口和添加注解来监控组件的生命周期状态,达到一个解耦的目的。LiveData 是一种可观察的数据存储器类。与常规的可观察类不同,LiveData 具有生命周期感知能力,意指它遵循其他应用组件(如 A.原创 2021-04-21 15:33:04 · 512 阅读 · 3 评论 -
【Android Jetpack高手日志】Lifecycle 从入门到精通
背景Android Jetpack 是一个由多个库组成的套件,可帮助开发者遵循最佳做法,减少样板代码并编写可在各种 Android 版本和设备中一致运行的代码,让开发者精力集中编写重要的代码。也就是说,Google 开发了一套通用的库让我们使用,帮助开发者高效的开发应用的工具集。详细内容可以参考这里。介绍Lifecycle 是 Android Jetpack 的一部分,是生命周期感知型组件,可执行操作来响应另一个组件(Activity 和 Fragment)的生命周期状态的变化。Lifecycle .原创 2021-04-20 16:27:09 · 516 阅读 · 13 评论 -
【Android Jetpack高手日志】DataBinding 从入门到精通
前言DataBinding 数据绑定库是 Android Jetpack 的一部分,借助该库可以使用声明性格式(而非程序化地)将布局中的界面组件绑定到应用中的数据源。我个人觉得,使用 DataBinding 时不要在 xml 布局文件中写复杂的逻辑,只负责绑定数据。只是负责将最终的数据和 UI 直接绑定,只是一个末端赋值而已,不涉及复杂的 UI 逻辑,而且避免了代码中大量冗余代码的判空处理,同时避免了那些常见的 setVisible 等样板方法的调用,简化开发流程,统一 UI 的数据来源。基本使用简.原创 2021-04-19 15:12:13 · 1753 阅读 · 10 评论 -
还在为SharedPreferences引起的ANR问题抓脑壳吗?MMKV集成及原理奉上!
祝各位牛年大吉,牛气冲天!前言SharedPreferences是谷歌提供的轻量级存储方案,使用起来比较方便,可以直接进行数据存储,不必另起线程不过也带来很多问题,尤其是由SP引起的ANR问题,非常常见。正因如此,后来也出现了一些SP的替代解决方案,比如MMKV本文主要包括以下内容1.SharedPreferences存在的问题2.MMKV的基本使用与介绍3.MMKV的原理SharedPreferences存在的问题SP的效率比较低1.读写方式:直接I/O2.数据格式:xml..原创 2021-02-18 21:54:43 · 538 阅读 · 0 评论 -
阿里P8大佬内部整理Jetpack宝典流出!天花板级别架构组件最快上手指南!
简介Jetpack是一套库、工具和指南,可以帮助开发者更轻松地编写优质应用。这些组件可以帮助开发者遵循最佳做法、让开发者摆脱编写样板代码的工作并简化复杂任务,以便开发者将精力集中放在所需的代码上。Android Jetpack组件的作用是什么?Navigation:一个用于管理Fragment切换的工具类,可视化、可绑定控件、支持动画等是其优点。Data Binding:不用说,都知道,加速MVVM的创建。Lifecycle:他是我们能够处理Activity和Fragment的生命周期的重要原.原创 2020-12-25 15:03:42 · 616 阅读 · 0 评论