高手问答第 216 期 —— Android 开发应该如何进阶?

局长 发布于 11/07 00:15
阅读 1K+
收藏 4

OSCHINA 本期高手问答(2018 年 11 月 7 日 — 11 月 13 日)我们请来了@刘望舒 为大家解答关于 Android 开发方面的问题。

刘望舒,资深开发工程师,Android 进阶二部曲《Android进阶之光》和《Android进阶解密》的作者,公众号“刘望舒”的作者。他在博客中构建了“Android相关原创知识体系”,该体系全面且深入并广获好评。他拥有近 10 年的开发经验和多年的技术管理经验,对 Android 框架层及应用层开发有着独到、深入的理解。

在这个竞争白热化的时代,Android 开发者越来越焦虑,因为各种新语言、新框架、新源码层出不穷,甚至应届生通过使用开源框架,分分钟就能设计出界面漂亮、运行流畅的 App。如果想在如此残酷的世界里保持竞争力,就需要让自己向底层挖,挖得越深,根基就越稳。

本期问答内容:

1.Android开发应该如何进阶
2.Android开发如何高效阅读源码
3.Android开发如何建立自己的知识体系
4.Android应用开发进阶的技术点

或者其它关于 Android 开发的问题,也欢迎大家积极提问!

为了鼓励踊跃提问,@博文视点 会在问答结束后从提问者中抽取 5 名幸运会员赠予《Android进阶解密》一书。

购买链接:当当网

OSChina 高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。

下面欢迎大家就 Android 开发相关问题向@刘望舒 提问,请直接回帖提问。

加载中
1
张睿知
张睿知
请问现在android用什么ui最好!
东风玖哥
东风玖哥
建议用Material Design,另外透露你一个秘密:Android官方推出过支持iOS的Material Design库
q
qqnp1100
material design =.=
0
渊泉如渊
渊泉如渊

@刘望舒 关于阅读Android源码和第三方库的源码,有没有很好的切入点或者如何来阅读,进而对整体有清晰的认识和理解?

刘望舒
第三方源码几乎是没有切入点的,因为都关联性不大,你可以先从常用的看起,比如okhttp,rxjava。系统源码的话跟着《Android进阶解密》这本书就行,这是为专门为Android应用开发所写的,按照顺序阅读并做好笔记,会逐步形成一个知识体系
东风玖哥
东风玖哥
我还没读过《Android进阶解密》,不过我认为针对RxJava的源码分析最好的资料是《Android进阶之光》
0
秋山人家
秋山人家

@刘望舒

以前做android应用开发,但是在后期经常遇到自定义控件,触摸事件这些问题,在没有了解原理的情况下,处理这类问题感觉很吃力,在网上找到解决方法,也感觉似是而非。我想了解怎样才能构建一套完整的知识框架体系?

秋山人家
秋山人家
回复 @刘望舒 : 好的,感谢感谢!成体系的博文都很难得!赞赞赞!
刘望舒
还是得了解View体系的机制,这个在《Android开发艺术探索》中讲解的很详细,《Android进阶之光》中也有介绍,如果不想看书可以看我的博客的View体系:http://liuwangshu.cn/tags/View%E4%BD%93%E7%B3%BB/。当然这个只是基础,要想深入可以了解下Android的输入系统
东风玖哥
东风玖哥
如果你是初学者,建议先从Android和Java的基础入手,一开始就想造一个OkHttp或者Glide这样的轮子就好像没学好断句、造句就想写大部头小说
0
开源中国首席罗纳尔多
开源中国首席罗纳尔多

@刘望舒 请问如何阅读开源框架吸收知识,开源框架代码量大,没技巧看的话捉不住重点,请问您是如何阅读的有什么技巧吗?目前androidUI的编写(做一些特效)您有什么心得吗?

刘望舒
开源框架代码量比较多,我建议先从你常用的api方法开始深入,多阅读几个api方法的源码,慢慢就对这个框架有所了解了。然后总结出大体的框架UML图或者其他调用图。一定要做好笔记,否则看完没多久忘了,还得重新看。
东风玖哥
东风玖哥
尽量阅读早期版本,因为越新的版本,细节就越多,重点越不突出
0
猴亮屏
猴亮屏

@刘望舒 你好,我是纯自学出来的,因为对SDK底层不熟悉,所以每当开发中遇到问题,不知道从哪里着手,后来也着手去看一些SDK源码,但是太过庞杂了,而且很多类是隐藏的,请问我应该如何入手源码?

猴亮屏
猴亮屏
回复 @刘望舒 : 谢舒哥,我自己去查查,月底北京GDG见
刘望舒
直接下载AOSP的源码和系统源码就行,地址:https://pan.baidu.com/s/1ngsZs。SDK的源码内容太少,关于阅读系统源码可以看《Android进阶解密》
东风玖哥
东风玖哥
回复 @猴亮屏 : 忽然想不起来你是谁了
猴亮屏
猴亮屏
回复 @东风玖哥 : 玖兔子,好久没见啊
东风玖哥
东风玖哥
去掉@hide标签的Android源码:https://github.com/anggrayudi/android-hidden-api
0
xpbob
xpbob

@刘望舒  很多支持手机客户端的开发,例如qt。运行会不会更好一些呢

刘望舒
QT在Android使用有些小众,不建议用QT。还是原生为主,然后主流的跨平台为辅。学习知识要注重知识的半衰期,跨平台框架的半衰期相对短,见这篇文章:https://juejin.im/post/5bdec702518825170f50c4b2
0
东风玖哥
东风玖哥

引用来自“张睿知”的评论

请问现在android用什么ui最好!

建议用Material Design,另外透露你一个秘密:Android官方推出过支持iOS的Material Design库

0
东风玖哥
东风玖哥

@刘望舒

1.Android开发应该如何进阶
任何程序员的进阶之路都是:能跟着团队成员做项目->能分析问题->能解决问题->能发现隐藏问题->成为领域专家;不同阶段的进阶方式都不一样。把握好自身提高的方向、有目标的提高才是最有效率的提高。

2.Android开发如何高效阅读源码
阅读源码要抓住重点,要抓住主线流程,建议阅读早期源码,因为越新的版本,细节就越多,重点越不突出。另外不要被庞大的代码量吓到,比如Retrofit的jar包体积和代码量不小,但其中一半以上是OkHttp3的,构建、发起请求、线程切换、缓存和监听等关键点的代码量并不大;同理,OkHttp3的体积和代码量也被各大网络协议的定义占据了一般一样。此外我认为针对RxJava的源码分析最好的资料是《Android进阶之光》

3.Android开发如何建立自己的知识体系
建议通过大量阅读技术博客,特别是知名博主的博客和公众号文章来建立自己的知识体系,有条件的话建议付费关注知识星球和购买实体书。此外做笔记也是一个好办法,笔记比书薄得多。

4.Android应用开发进阶的技术点
(1)Android常见组件(HandlerThread、DataBinding)和常见开源框架(Glide、PhotoView)的源码分析
(2)Android源码中的设计模式
(3)Canvas和Animator的使用
……

5.与刘望舒交流的心得
如果不满足于只关注他的博客、公众号、知识星球和阅读他的两本书,直接加他的微信交流,他很乐于答疑解惑。不过他的性格过于耿直、认真,不喜欢开玩笑,也不喜欢讨论技术无关的内容。我平时最喜欢做的事就是在评论区对他的公众号文章进行补充,并且分享到朋友圈

0
天山的影子
天山的影子

@刘望舒 大佬您好!看了一下《Android进阶解密》的目录,发现您介绍了广播的技术。那么关于app内部消息传递,您更推荐使用系统广播,还是类似eventbus之类的框架?谢谢!

刘望舒
嗯,不是广播的应用,是广播的源码。我建议相对复杂的应用还是用广播,其他的可以用eventBus
返回顶部
顶部