面试常用,Android开发(9),安卓资深架构师分享学习经验及总结
接下来我说的话可能会使部分读者感到不满。拜托,别太把这事当真。Android开发中另一个流行的多线程框架RxJava很快就会成为“过去式”。从下面这幅StackOverflow趋势图可以明显看出:许多开发者会质疑我的观点,称该数据不具有代表性,并且还有其他方法的可以解释该图。他们可能是正确的,因为我自己也不是数据科学家。但是,在此图中,我看不到任何其他关于峰值的解释,而且RxJava的曲线与Asy
接下来我说的话可能会使部分读者感到不满。拜托,别太把这事当真。
Android开发中另一个流行的多线程框架RxJava很快就会成为“过去式”。 从下面这幅StackOverflow趋势图可以明显看出:

许多开发者会质疑我的观点,称该数据不具有代表性,并且还有其他方法的可以解释该图。他们可能是正确的,因为我自己也不是数据科学家。但是,在此图中,我看不到任何其他关于峰值的解释,而且RxJava的曲线与AsyncTask的曲线具有相同的斜率。
因此,如果您尚未花时间在学习RxJava上并且您的项目没有使用它,那么我建议您避免使用它。实际上,这一直是我的建议,今天它也得到了数据的支持。
如果您的项目已经使用了Rx,也请不要惊慌,您无需立即重构任何东西。但是,请记住,今后找到具有Rx经验的开发人员将越来越困难。 因此,在项目中广泛使用Rx可能需要新的开发人员投入更多的时间。最终,广泛使用Rx的项目将被视为“not cool”(例如今天使用AsyncTask和Loaders的项目)。
我知道我的这些观点对于许多开发人员来说很不友好。他们花了数周时间来学习RxJava,甚至说服了同事在项目中使用RxJava,现在我却说它会成为“过去式”。我只想说我只是分析实际情况并根据我所看到的做出预测,我可能是错的,也可能是对的。
在Kotlin语言中,我们可以使用协程。我最近使用协程实现了一些复杂的用例,发现此框架非常的细微和复杂,并且相对不成熟,我甚至发现了一个bug。
有一种流行的说法是,协程使得并发处理更简单。我从来不这样认为,因为我知道并发是非常复杂的,但是在我有了一些实践经验之后,我可以自信地说,协程并没有想像中的那么美好。在我看来,协程实际上增加了程序复杂性,所以我建议你们小心地使用它们。
另一方面,协程似乎将成为Kotlin语言里处理并发操作的默认方式。因此,我认为如果您编写Kotlin代码,您需要投入时间并学会使用它们。
据我所知,目前还有一个流式框架,它在协程之上添加了流处理操作符。几个月前才稳定下来,所以我现在还不能说什么。
现在让我们来讨论一下Kotlin。根据以往的经验,我知道这是一个非常敏感的话题,而且不管我描述的多么客观,最终都会遭受一些开发者的攻击。然而,我认为在总结原生Android开发现状的时候跳过Kotlin是极不诚实的。因此,我再次请你不要把我说的话当真。
你所需要知道的一个重要的事实是:在Android开发中使用Kotlin会严重增加你的构建时间。
在这篇文章中,您会了解到我在使用Kotlin进行开发时对构建时间所进行的统计测试的结果。clean build 增加了18%的构建时间,incremental build 增加了8%的构建时间。
Uber与JetBrains也联合发表了他们自己的研究结果,他们的结果更为负面。如果您不在应用程序中使用注解处理器,那么引入Kotlin可能会使您的构建时间增加四倍!如果您使用了注解处理器,那么引入Kotlin会使您的构建时间增加50%-100%。
Uber的研究结果与将OkHttp迁移到Kotlin版本后构建时间增加了4倍的结果是一致的。
如果您对这些数字感到惊讶,您不用担心-这不是您的错,而且您并不孤单。尽管这个事实极为重要,但它并未得到广泛讨论,并且我觉得Google也试图回避这个事实。我曾与Google内部一个熟悉此事的开发人员有过一次非常有趣的讨论,我问他是否可以讨论下这个话题,他说:“我不喜欢;我不喜欢;我不喜欢。这是一件很微妙的事情。”
除了增加构建时间之外,Kotlin还不支持增量注解处理,而在大约10个月前Java就已经支持增量注解处理了。
两年前,我写了一篇文章来警告开发者们在早期使用Kotlin时可能会遇到的潜在风险。在很长一段时间内我被称为“kotlin的讨厌者”。
但是,如果您今天阅读这篇文章,您会发现我实际上低估了这些问题的严重性。在大型的Android项目上,构建时间是最糟糕的生产力杀手之一,而且即使在今天,即Kotlin被官方“正式采用”两年多之后的今天,Kotlin仍然不如Java。不管Kotlin带来什么其他好处,所有这些都可能由于更长的构建时间而被否定。
也就是说,我们不应改忽视这样一个事实:是谷歌将android开发的生态强行推向了kotlin,使得其使用率在稳步上升。
就我个人而言,我并没有在我目前已经开始的新项目中选择kotlin语言,我不想在kotlin上浪费我自己的时间。不过,从现在开始,我会认真考虑使用kotlin来开发新项目,我已经在几个demo上尝试过了。但是我不同意开发人员说你必须在新项目中使用Kotlin,这仍然是一种权衡。
至于你们是否应该将现有项目迁移到Kotlin,我无法提供任何一般性建议,您需要根据具体的情况进行仔细的分析。但是,如果您确实决定开始(或已经开始)迁移,那么这个帖子可能会对您有用。
在过去的两年中,我开发了三个新的应用程序。我认真研究了现有的项目并分析了早期技术决策所带来的长期影响。我写了一些博客,提供有关Android开发的高级课程。我花了很多时间在互联网上讨论Android开发相关主题。
尽管如此,我还是感觉自己无法跟上Android生态系统的变化。
如果是这样的话,对于那些缺乏经验、需要指导的Android开发人员,我深表歉意,而且我至今无法想象从头开始学习Android开发的感觉。当您对框架和工具感到满意的时候,其中许多将已过时或即将过时。加入这个原本很棒的社区可能是最糟糕的时刻。Google为他们的“包容性”感到非常自豪,但看起来它不适用于经验不足的开发新手。
我个人认为Google对Android框架所做的更改会导致巨大的人类潜力浪费。阅读所有这些更改需要花费数小时,更不用说实际实施它们了。我宁愿花更多的时间来创造价值,而不是追逐自己的尾巴。
在这篇文章中,我试图总结有关Android原生开发现状的一些重要的内容,我还对未来做了一些预测。这篇文章并不完美:它可能包含一些错误,而且还错过了一些其他重要内容。请随时在下面的评论中纠正我。但是请记住,本文没有任何私人内容。我知道我提出了一些非常有争议的观点,但是我相信这是对的。
我还在本文的多个地方引用了我之前写的一些文章。我这样做并不是为了炫耀并说“看,我是正确的!”,而是让您能够了解我过去的预测并将其与实际发生的情况进行比较。当我写这些文章时,他们读起来就像您今天读本篇文章一样疯狂。但是我所做的预测却非常准确。
当然,我也想说:“看,我是对的!”。我冒着巨大的专业风险发表了这些有争议的预测,在得知自己没有误导读者后我感到非常的欣慰。即使有时候我宁愿自己是错的,也希望Google成为真正的合作伙伴。但是到目前为止,情况并非如此。
最后附上文章作者对于跨平台开发的一些看法,仅供参考。

作者:ronaldong
链接:https://juejin.im/post/5e0eb606f265da5d0d435b88
来源:掘金
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。






既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
【附】相关架构及资料
源码、笔记、视频。高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter全方面的Android进阶实践技术,和技术大牛一起讨论交流解决问题。

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算**
更多推荐


所有评论(0)