关于对Android的理解,知识点梳理

2015年08月11日 13:15 0 点赞 0 评论 更新于 2025-11-21 16:27

前言

撰写这篇文章,旨在与大家分享我对 Android 的理解,并阐述我后续的技术学习规划,期望能为大家提供一些参考。大家都渴望学好 Android,但学好它并非易事。在此,我将分享自己在应用层开发方面的学习心得,因为我主要专注于 Android 应用层开发。

知识的分类

Android 涵盖众多知识点,虽多数不难,但数量繁多,给人琐碎之感。因此,对知识进行分类十分必要。我将 Android 知识分为以下几类:

1. 基本知识点

这类知识包括四大组件的使用方法、Service 的创建方式以及布局的实现等。对于初中级开发者而言,这些内容必须熟练掌握。

2. 稍微深入的知识点

例如 AIDL、Binder、多进程、View 的绘制流程、事件分发、消息队列等。中高级开发者需要熟练掌握这些知识。

3. 基本知识点的细节

像 Activity 的启动模式和标记位、Service 同时处于 start 和 bind 状态时的停止问题、AsyncTask 的同步异步问题以及使用时的限制等。这类知识点在开发过程中容易被忽视,导致开发者虽能正常开发应用,但在面试时面对细节或特殊情况的提问,往往难以应对。高级开发者需要掌握这些内容。

4. 系统核心机制

包括主线程的消息循环、主线程与 AMS 的跨进程交互方式以及 SystemServer 进程中各种 Service 的工作原理等。这些知识有助于开发者理解 Android 的运行体系,建议高级和资深开发者熟悉并掌握。

5. 琐碎的知识点

此类知识点重要但技术难度较低,如打开网页、打电话、发短信、定位、多点触控等。这些问题记忆难度较大,但在需要时查阅资料即可解决。所有级别的开发者都只需对其有所了解。

类别描述开发者所需级别
基本知识点熟练掌握初中级
深入知识点熟练掌握中高级
基本知识点的细节掌握高级
系统核心机制熟悉、掌握高级、资深
琐碎的知识点了解所有级别

如何学习

学习 Android 知识点,通常需要看书、查阅官方文档并编写代码,这需要投入大量时间。很多人在学习 Android 源码时会感到困惑,觉得难以理解,这是正常现象。看源码时,应着重把握流程,初期不必过于纠结代码细节。若一遍看不懂,可多读几遍,随着对代码的熟悉程度增加,理解也会逐渐加深。

此外,看源码要选好切入点。Android 源码数量庞大,可先从自己感兴趣的问题入手。例如,思考“Activity 启动时,Activity 对象何时创建”这一问题。由于 Java 是面向对象的语言,Activity 必然需要创建对象。带着这个疑问,沿着 Context 的 startActivity 方法逐步分析,能让我们更深入地了解源码。通过这种方式学习,当积累一定数量的主题后,会形成知识体系,该体系建立在 Android 整体架构之上。不过,不建议一开始就看 C 层源码,可在对源码有一定理解后再进行学习。对于琐碎的知识点,无需花费过多时间,意义不大。

要知其所以然

学习过程中,我们应具备质疑精神。很多时候,我们掌握了知识点,却未深入思考其背后的原理。例如,RemoteViews 仅支持有限的系统 View,这是为什么呢?再如,AsyncTask 要求首次访问必须在 UI 线程,原因是什么?若在子线程首次访问会怎样?深入思考这些问题,能帮助我们更好地理解知识点的本质,提升技术水平。

我的技术规划

目前,我在 Android 及其他技术领域仍有许多待学习的内容。在 Android 方面,我需要更深入地研究源码,同时学习 Linux shell 脚本和 Linux 的内部实现,以加深对 Android 实现原理的理解。对于 IOS 开发,我也想有所了解,拓宽知识面,但不会投入过多精力,毕竟成为全栈工程师难度极大,且国内招聘对全栈工程师的需求有限,这类开发者在面试中可能因技术深度不足而被淘汰。

此外,我还会学习编译环境的搭建,如 Gradle、Gerrit 等。按照此规划学习,我希望在 Android 领域达到一定深度,借助 Linux 内核知识的支撑,了解 IOS 开发,并掌握环境搭建技能。我在学校已对 C、C++、Web 开发等知识点有初步了解,这样能兼顾知识的广度和深度。

在移动应用安全方面,为防止安卓代码被反编译,开发者可采取一些保护措施。很多不法分子通过反编译盗版安卓应用,因此为避免应用布局和逻辑被他人知晓,尤其是竞争对手,可使用爱加密进行加密保护。我曾进行测试,使用爱加密后,原代码程序会被隐藏,无法查看源代码。

作者信息

洞悉

洞悉

共发布了 3994 篇文章