架构
文章平均质量分 92
Android-until
这个作者很懒,什么都没留下…
展开
-
说到Jetpack路由组件熟悉的只有ARouter框架?今天带你深入理解功能强大的Navigation架构
1.前言不管你之前用没用过Jetpack Navigation组件,但是或多或少你也可能听说过它。它是Jetpack库中的一个路由组件。此刻你的脑海中可能会浮现阿里ARouter框架。如果你熟悉ARouter但是对Navigation比较陌生,那么你先简单把它们联系在一起,有个直观的感受。「如果你对ARouter和Navigation都不太熟悉,没关系,并不影响你对本文的阅读。」Navigation支持Activity、Fragment、Dialog的路由跳转,功能非常强大。此刻灵魂拷问一下..原创 2021-08-05 15:09:23 · 641 阅读 · 0 评论 -
Android中关于Context的三言两语,源码强势分析带你了解Context!
前言今天我们来分析一下 Context 的源码,在 APP 开发中,我们会经常用到 Context ,那么什么是 Context 呢?它的常规语义是“上下文”那么这个“上下文”到底是什么呢?通过源码分析,我们能对这个Context有个基本的认识。类继承图我们来看下关于 Context 的类继承图,我们通过查看源码得知,Context 是一个抽象类,所以它肯定有其实现类,查阅得知它的实现类为 ContextWrapper 和 ContextImpl ,所以它的继承图如下:以上的 Conte原创 2021-02-03 21:51:39 · 270 阅读 · 0 评论 -
Android开发:这可能是ViewPager2滑动冲突最全的处理方案,内外兼修,解决冲突!
背景自去年12月份ViewPager2正式版发布以后,ViewPager2已经逐渐开始替代旧版本的ViewPager。许多开发者也已经在项目中使用了ViewPager2。相比ViewPager,ViewPager2的功能不可谓不强大。我在之前写过的一篇文章学不动也要学!深入了解ViewPager2:https://zhpanvip.gitee.io/2019/12/14/24.Know%20about%20ViewPager2/对ViewPager2的使用做过详细的讲解。但是,由..原创 2021-01-29 21:16:26 · 1299 阅读 · 2 评论 -
都2021年了,还不会JetPack的Android开发以后连面试机会都没有!
JetPack自2018年面世,迎来了它的第三个年头。但是在国内的受欢迎程度远远及不上国外,国内开发者一听到别人说JetPack,脑海中蹦出来的词就是“不成熟”、“不好用”、“调试有点难”,但是事实真的是如此嘛?我们首先来看看JetPack在发布的时候的雄心壮志:Jetpack是一套库、工具和指南,可帮助开发者更轻松地编写优质应用。这些组件可帮助您遵循最佳做法、让您摆脱编写样板代码的工作并简化复杂任务,以便您将精力集中放在所需的代码上。以上来自谷歌语录,总结起来就是:JetPack是原创 2021-01-29 16:40:59 · 2420 阅读 · 8 评论 -
字节+谷歌超全Kotlin学习王炸笔记!Kotlin入门到精通+高级Kotlin强化实战(附Demo)
Android开发者必须要知道的KotlinAndroid开发者在语言限制方面面临着一个困境。众所周知,目前Android开发所用的Java语言比较臃肿,这极大地降低了我们的生产力,同时也迫使我们不得不编写大量的样板与脆弱的代码,然而这样的代码是难以阅读和维护的。幸运的是,Android程序是运行在Java虚拟机之上的,因此从技术上来说,可以运行在JVM之上的一切都可用于开发Android应用。现在已经有很多可以生成JVM能够执行的字节码的语言,其中一些语言开始崭露头角并逐步流行起来,Kotlin就..原创 2021-01-26 16:53:57 · 4505 阅读 · 7 评论 -
温故知新:深入理解Android插件化技术,Android高级插件化强化实战!(附源码)
最近几年移动开发业界兴起了「 插件化技术 」的旋风,各个大厂都推出了自己的插件化框架,各种开源框架都评价自身功能优越性,令人目不暇接。随着公司业务快速发展,项目增多,开发资源却有限,如何能在有限资源内满足需求和项目的增长,同时又能快速响应问题和迭代新需求,这就是一个矛盾点。此时,插件化技术正好风生水起,去了解各个主流框架实现思路,看看能对目前工作是否有帮助,是很有必要的。插件化介绍百度百科里是这么定义插件的:「 是一种遵循一定规范的应用程序接口编写出来的程序,只能运行在程序规定的系统平台下...原创 2021-01-21 21:57:32 · 409 阅读 · 0 评论 -
Android面试翻车实录:5年开发,惨败在简历上没写组件化“这个”项目,腾讯高级开发岗必问知识点!
Android从2008年10月发布至今已有快12年了,开发者们从Android 1.0的版本跨越到了Android 11。在这个过程中,我们经历了很多。对于如何去衡量一个开发者的水平到底有多高,一般我们会看他会什么,能干什么。如果是一个刚入行的新手,水平大概是初级开发者,那么公司对他的要求就不会太高。但是在咱们Android行业有太多伪装的新手,3-5年工作经验的“新手”。那么新手一般如何开发的呢, 项目架构毫无章法,代码毫无设计模式,性能体验毫无快感。所以我们会发现水平的高与低,完.原创 2021-01-20 16:45:12 · 511 阅读 · 0 评论 -
Android 架构师研发技术进阶之路:不同阶段需要掌握的那些技术及软技能
前言移动研发火热不停,越来越多人开始学习android开发。但很多人感觉入门容易成长很难,对未来比较迷茫,不知道自己技能该怎么提升,到达下一阶段需要补充哪些内容。市面上也多是谈论知识图谱,缺少体系和成长节奏感,特此编写一份android研发进阶之路,希望能对大家有所帮助。这篇文章里,我们只谈技术,不谈软技能。在这里我把攻城狮分成初级、中级、高级和资深四个阶段,分别对研发设计能力、工具使用、系统原理和架构等作出要求。初级我对初级研发攻城狮的定义是掌握基础的android知识,能够独..原创 2021-01-08 22:22:21 · 602 阅读 · 2 评论 -
Android:双11已经过了双12都要到了,还不给你的APP加上自动换图标的功能吗?
前言也许你也注意到了,在临近双11之际,手机上电商类APP的应用图标已经悄无声息换成了双11专属图标,比如某宝和某东:可能你会说,这有什么奇怪的,应用市场开启自动更新不就可以了么?真的是这样吗?为此,我特意查看了我手机上的某宝APP的当前版本,并对比了历史版本上的图标,发现并不对应。默认是88会员节专属图标,而现在显示的是双11图标。那么,作为开发者的嗅觉,让你自然而然想要从技术角度揣测是怎么实现的,而这便是这篇文章想要与你分享的。知识储备<activity原创 2020-12-11 15:08:43 · 305 阅读 · 1 评论 -
不明白四大组件底层的通信机制是怎样的?写给Android应用工程师的Binder原理剖析!
一、前言这篇文章我酝酿了很久,参考了很多资料,读了很多源码,却依旧不敢下笔。生怕自己理解上还有偏差,对大家造成误解,贻笑大方。又怕自己理解不够透彻,无法用清晰直白的文字准确的表达出 Binder 的设计精髓。直到今天提笔写作时还依旧战战兢兢。Binder 之复杂远远不是一篇文章就能说清楚的,本文想站在一个更高的维度来俯瞰 Binder 的设计,最终帮助大家形成一个完整的概念。对于应用层开发的同学来说,理解到本文这个程度也就差不多了。希望更加深入理解 Binder 实现机制的,可以阅读文末的参考资..原创 2020-12-10 21:41:06 · 845 阅读 · 1 评论 -
Android程序员:“如何详解 Activity 的生命周期?”结果问完被怼了...
最近在知乎上看到一个很基础的问题:如何详解 Activity 的生命周期?提问者的情况:本身在知乎上问这么基础的问题再加上说我们国内的开发水平比美国低,也难怪被所有人喷了。。。接着,回到正题,关于Activity生命周期,对于网上也有大量博客讲到这个问题,接下来就给大家讲讲Activity的知识:1.Activity生命周期这幅图比较清晰,就不细说,下面我就说说图上没有的吧(一)Activity与进程的关系作为应用开发者,接触更多的是Activity/Servic.原创 2020-12-05 22:14:46 · 243 阅读 · 0 评论 -
【Android进阶必学】JetPack指路明灯—Navigation
官网镇楼:https://developer.android.com/guide/navigation很多人在学习JetPack的时候喜欢到处找资料和各种学习的博客,但其实,官网上的资料已经很丰富了,而且写的很好,大部分时间,只需要先将官网上的资料吃透,基本上已经秒杀市面上80%的博客和文章了。这篇文章并不会花大篇幅讲解Navigation的各种使用,因为官网文档已经无比详细了,本篇文章更重要的是讲解设计原理和核心概念的分析。Navigation是JetPack中非常重要的一员,他对..原创 2020-12-03 21:28:12 · 793 阅读 · 1 评论 -
三个问题带你回顾安卓 RxJava基础,这个神奇又难用的框架
前言今天开始聊聊Rxjava,这个神奇又难用又牛逼的框架。先说说Rxjava两个关键词: 异步。Rxjava可以通过链式调用随意切换线程,同时又能保证代码的简洁。 观察者模式。Rxjava的核心,说白了就是一个观察者模式,通过观察者订阅被观察者这一层订阅关系来完成后续事件的发送等工作。 然后开始提问题了,Rxjava涉及的内容很多,我还是会以三个问题为单位,从易到难,一篇篇的说下去,今天的三问是:RxJava的订阅关系 Observer处理完onComplete后会还能..原创 2020-12-02 21:01:44 · 569 阅读 · 1 评论 -
强大!ASM 插桩实现 Android 端无埋点性能监控!
背景当我们需要了解页面加载性能时,可以通过手动埋点的方式记录页面阶段耗时、网络耗时、数据库加载耗时以及其他耗时点,配合slardar平台,能直观地了解到页面的性能情况。但随着业务变动,手动埋点存在易写错,难维护的麻烦。业界广泛使用了插桩技术来实现无埋点监控,我们也结合现有监控库,实现了自己的无埋点监控方案。本文旨在介绍实现原理,方便大家对监控库的使用。功能需求我们希望提供以下功能 和业务无关的代码,我们希望能够以无需手动埋点的方式进行监控,包括页面生命周期、JSON耗时,网络耗时、SQ..原创 2020-12-01 17:04:25 · 519 阅读 · 0 评论 -
Android采坑之路(一):怀疑人生,主线程修改UI也会崩溃?
前言某天早晨,吃完早餐,坐回工位,打开电脑,开启chrome,进入友盟页面,发现了一个崩溃信息:java.lang.RuntimeException: Unable to resume activity {com.youdao.youdaomath/com.youdao.youdaomath.view.PayCourseVideoActivity}: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the origi..原创 2020-11-18 17:28:28 · 667 阅读 · 0 评论 -
Handler源码和9个常见问题的解答,这些你都掌握了吗?
Handler是Android中的消息处理机制,是一种线程间通信的解决方案,同时你也可以理解为它天然的为我们在主线程创建一个队列,队列中的消息顺序就是我们设置的延迟的时间,如果你想在Android中实现一个队列的功能,不妨第一时间考虑一下它。目录:一个线程中最多有多少个Handler,Looper,MessageQueue? Looper死循环为什么不会导致应用卡死,会耗费大量资源吗? 子线程的如何更新UI,比如Dialog,Toast等?系统为什么不建议子线程中更新UI? 主线程如何访问网络原创 2020-11-17 21:12:39 · 578 阅读 · 0 评论 -
带着问题高效学Android:关于Java与Kotlin泛型你应该知道的知识点
前言带着问题学习可以让我们在学习的过程中更加有目的性与条理。 例如在读源码的过程中,我们如果从头开始读,往往千头万绪,抓不住要领。 而如果在开始读之前先带着几个问题,则可以让我们在读源码的过程中有一个主线。 最后也可以通过判断自己的问题是否得到解决了,来判断自己是否真的读懂了,不然面对成千上万行的代码,很容易有白读了的感觉。阅读本文前,下面先列出几个问题1.为什么我们需要泛型?2.如何定义泛型类?如何定义泛型方法?3.怎么限定类型变量?4.泛型有什么局限性?5.泛型类型的继承规则是..原创 2020-11-17 16:59:51 · 238 阅读 · 0 评论 -
【建议收藏系列】:我打赌你一定没搞明白的Activity启动模式!
一个应用程序当中通常都会包含很多个Activity,每个Activity都是一个具有特定的功能,并且可以让用户进行操作的组件。另外,Activity之间可以相互启动,当前应用的Activity甚至可以去启动其他应用的Activity。比如你的应用希望去发送一封邮件,你就可以定义一个具有"send"动作的Intent,并且传入一些数据,如对方邮箱地址、邮件内容等。这样,如果另外一个应用程序中的某个Activity声明自己是可以响应这种Intent的,那么这个Activity就会被打开。当邮件发送之..原创 2020-11-06 21:17:29 · 258 阅读 · 0 评论 -
看我一波,Android获取进程名函数,代码优化到极致的操作!
建议收藏本文,你的项目一定用的到。一、获取进程名的常规方法,通过ActivityManager在多进程的APP中,常常需要知道当前进程是主进程还是后台进程?还是什么进程。如下代码,是我们常见的一个用法,在进程启动时,根据进程名判断当前进程是哪个进程:public class MyApp extends Application { private static final String TG = "MyApp"; @Override public void onCreate.原创 2020-10-21 15:39:12 · 1529 阅读 · 2 评论 -
开发6年一路收藏,2000+页Android超系统核心知识笔记终于出炉,少走十年弯路!
程序员是一个需要不断学习的职业。幸运的是,在这个互联网时代,知识就在那里,等着我们去获取。作为一个“收藏从未停止,学习从未开始”的博主,秉承着好东西不能独享的态度,把收藏的学习资源整理分享出来,希望大家不要学我,一定要好好学习,天天进步,升职加薪????。今天要分享的是进阶Android高级的系统核心知识点:这是大纲目录一共分为7大模块:必备Java基础 设计思想解读开源框架 360°全方位性能优化 Android框架体系架构 NDK模块开发 Flutter学习进阶原创 2020-10-20 20:03:05 · 340 阅读 · 1 评论 -
App为什么会crash?一篇文章带你探究根本原因 ,事情没有你想得那么简单!
前言看到这个问题,马上就可以回答出来:因为抛出异常就会 crash。那么为什么抛出异常就会 crash 呢?有没有办法不让 App crash 呢?接下来我们进入正题吧先探讨一下第一个问题吧:为什么抛出异常就会 crash。首先我们看下线程中抛出异常以后的处理逻辑吧:一旦代码抛出异常,并且我们没有捕捉的情况下,JVM 会调用 Thread 的 dispatchUncaughtException 方法。 public final void dispatchUncaughtE..原创 2020-09-16 22:15:33 · 576 阅读 · 0 评论 -
想掌握 Binder 机制?驱动核心源码详解和Binder超系统学习资源,想学不会都难!
本文设计源码及逻辑较多,已尽量画图辅助,完全理解可能要耗一定精力,建议收藏。应用程序中执行 getService() 需与 ServiceManager 通过 binder 跨进程通信,此过程中会贯穿 Framework、Natve 层以及 Linux 内核驱动。binder 驱动的整体分层如上图,下面先来宏观的了解下 getService() 在整个 Android 系统中的调用栈,ServiceManager 本身的获取:与 ServiceManager 进行 IPC 通信:.原创 2020-09-11 18:01:32 · 238 阅读 · 0 评论 -
Android程序员想进大厂?算法很重要!2020年必学的 10 大算法关注一下
背景最近一个朋友和我反馈,他坚持刷题2个月,终于去了他梦寐以求的大厂,薪资涨幅非常可观,期间面字节跳动还遇到了原题...并表示目前国内的大厂和一些独角兽,已经越来越效仿硅谷公司的做法,通过面试给定题编程,来考察数据结构 和算法的扎实程度。这种方式,即使对于工作多年的开发人员,没有经过训练,很容易就被挂了。从而与优秀的公司失之交臂。我认识不少以前履历普通的,通过刷题改变了自己进入大厂的轨迹,从而走向更高的平台,刷题确实太重要了。因为据我所知很多大厂技术面试的要求是:技术要好,计算机基础扎实,熟..原创 2020-09-08 20:52:06 · 268 阅读 · 0 评论 -
Android开发笔记:Retrofit + OkHttp3 + coroutines + LiveData打造一款网络请求框架
一个好的网络框架需要有那些特点呢?请求 当然这个请求不单单是发送请求这么简单,它包括请求相关的一系列配置是否简易、发送模式是否灵活切换、请求头信息是否易处理、请求参数是否易操作等等 响应 一个好的网络请求框架肯定需要提高我们的生产力,保证我们程序的健壮性,那么响应体和这些又有什么关系呢? 容易转换成不同需求的实体 是否能返回不同类型的结构。xml、json、text等等总的来说就是易使用、易扩展、可读性高一、目的背景市场上现在存在的网络请求不在少数,从原生的HttpClient ...原创 2020-09-03 15:33:07 · 625 阅读 · 0 评论 -
写出一份“有理有据使人信服”的Android项目设计文档,这个技能也很重要!
周末?不存在的。在大厂,写得一手好文档是一个非常吃香的技能。这可不只是一个锦上添花的东西,而是很多工程师晋升,打造自己话语权的武器。我这两年在组内的深刻体会就是,大部分厉害的高级工程师(不包括那些纯混日子靠资历晋升的人),写文档的能力一点也不含糊,很能抓住上级和项目的G点。可能有人会觉得,我技术牛逼就行了,为啥还要提高写文档的能力,有这功夫我还不如多看看源码分析?这是一些初级或者刚入门的工程师的普遍的困惑。这是因为大部分刚刚入行的朋友有一个很深的误区,就是他们以为做软件工程是一个..原创 2020-08-23 21:39:02 · 247 阅读 · 0 评论 -
为了满足UI小姐姐要求,自己动手实现了Android面包屑效果(支持Fragment联动)
由于UI小姐姐给的设计图中包含了面包屑效果,去github逛了一圈,没有特别合适的,只能自己实现了。先看下效果图:先看下逐个添加Fragment,然后按返回键挨个回退的场景:接着看下逐个添加Fragment,直接点击选择tab的场景:demo地址BreadCrumbsView使用方式1、布局中引入BreadCrumbsView<com.tinytongtong.breadcrumbs.BreadCrumbsView android:id="@+原创 2020-08-19 20:57:29 · 253 阅读 · 0 评论