Android开发只要写写界面就可以了吗?

当然不可以,有很多东西你真的懂得吗?
比如最简单最常用的toast.show()的实现机制是什么?为什么show()一下就显示出来了?
再比如你用烂了的 listview,即使加载几千万条数据,滑动起来也很流畅的原因设计机制是什么吗?
Binder机制你搞清楚了?
Intent 是如何实现 Activity、Service 等之间的解耦合的?
性能优化中的内存优化、电量优化你都优化到位了?
单元测试你会写了?Monkey 能跑多长时间?性能测试通过了?
Hook你会玩了?
。。。。。
你sdk调一调就很容易实现的东西,其背后实现的机制是什么样子的呢?Google工程师们为什么这样实现呢?有什么好处?这些问题都是值得思考的,而这些思考都是建立在你深入学习Android 源码之上的。
而Android 再往下深入还有好多层,扔你张图自行体会。


android-stack_2x.png

Libraries:
Linux Kernel(Linux内核) 基于linux2.6的内核,实现Security(安全性)、Memory Management (内存管理)、Process Management(进程管理)、Network Stack(网络协议栈)和Driver Model(驱动模型)等。

硬件驱动程序:
The Linux完成与各种硬件的通信,Linux内核提供了大部分设备的驱动程序,如显示屏、键盘、内存、摄像头、无线网络、音频设备、电源等组件。硬件制造商可以将其驱动程序构建到Linux构建中。(hardware manufactures can build their drivers into theLinux build)
Security:
The Linux kernel handles the security between the application and the system.

系统内存管理:
对所有可用内存进行统一编码管理,定义一整套内存定位、使用、回收策略。

进程管理:
内核管理进程的创建和销毁,管理进程间的通信以及采取必要措施避免死锁等问题.

网络管理:
无线网络设备工作原理,内核掌控如何读取网络设备中的缓存数据.

Linux Kernel作为硬件和软件层间的抽象层,隐藏了硬件具体细节而为上一层提供服务。分层的好处就是使用下层提供的服务而为上一层提供统一服务。屏蔽本层和下一层的差异,当本层或是下一层出现变化而不会影响上一层,即各层各司其职提供固定的SAP(service access point),专业点说高内聚、低耦合。

所以,你问“Android开发就是一些接口的调用和ui界面的逻辑处理,还有其他可以深入学习的吗?”,随便找一层,就够你学的了。

推荐阅读更多精彩内容