在线客服
扫描二维码
下载博学谷APP
扫描二维码
关注博学谷微信公众号
为了帮助正在求职中高级Android开发岗位的求职者,建立起全面系统的Android知识体系,本文总结了Android进阶学习的一些重要知识点,主要包括了 Android Framework、性能优化和第三方框架等内容。每一句话都是干货,大家可以把文章收藏起来再慢慢复习梳理。

一、Binder
1、介绍Binder
Binder是Android中特有的IPC方式。基于Binder,Android还实现了其他的IPC方式,比如AIDL、Messenger和ContentProvider。Binder的优点在于效率高、安全性好。
2、Binder的通信过程

(1)Server在Service Manager中注册:Server进程在创建的时候,也会创建对应的Binder实体,如果要提供服务给Client,就必须为Binder实体注册一个名字。
(2)Client通过Service Manager获取服务:Client知道服务中Binder实体的名字后,通过名字从Service Manager获取Binder实体的引用。
(3)Client使用服务与Server进行通信:Client通过调用Binder实体与Server进行通信。
二、 序列化
Android的序列化方式:为了解决Android中内存序列化速度过慢的问题,Android使用了Parcelable。

三、Framework
1、App的启动过程
(1)ActivityThread:依赖于Ui线程,实际处理与AMS中交互的工作。
(2)ActivityManagerService:负责Activity、Service等的生命周期工作。
(3)ApplicationThread:System Server进程中ApplicatonThreadProxy的服务端,帮助System Server进程跟App进程交流。
(4)System Server:Android核心的进程,掌管着Android系统中各种重要的服务。
2、Apk安装的主要步骤
(1)将apk文件复制到data/app目录
(2)解析apk信息
(3)dexopt操作
(4)更新权限信息
(5)完成安装,发送Intent.ACTION_PACKAGE_ADDED广播
四、Context
1、概念
不论是Android小白还是经验丰富的Android开发者,对Context都不会陌生。在加载资源、启动一个新的Activity、获取系统服务、获取内部文件(夹)路径、创建View操作时等都需要Context的参与,可见Context的常见性。Context字面意思上下文,或者叫做场景,也就是用户与操作系统操作的一个过程。
2、Context的应用场景

五、Android性能优化
性能优化是Android进阶学习的一个重要知识点。关于Android的性能优化我们可以从布局、绘制、内存优化
(1)布局优化
如果父控件有颜色,也是自己需要的颜色,那么就不必在子控件加背景颜色;如果每个自控件的颜色不太一样,而且可以完全覆盖父控件,那么就不需要再父控件上加背景颜色;尽量减少不必要的嵌套;能用LinearLayout和FrameLayout,就不要用RelativeLayout,因为RelativeLayout控件相对比较复杂,测绘也想要耗时。
(2)绘制优化
一方面onDraw方法中不要做耗时的任务,也不做过多的循环操作,特别是嵌套循环,虽然每次循环耗时很小,但是大量的循环势必霸占CPU的时间片,从而造成View的绘制过程不流畅。另一方面,除了循环之外,onDraw()中不要创建新的局部对象,因为onDraw()方法一般都会频繁大量调用,就意味着会产生大量的零时对象,不进占用过的内存,而且会导致系统更加频繁的GC,大大降低程序的执行速度和效率。
(3)内存优化
内存泄漏指的是那些程序不再使用的对象无法被GC识别,这样就导致这个对象一直留在内存当中,占用了没来就不多的内存空间。因为有内存泄漏,所以内存被占用越来越多,那么GC会更容易被触发,GC会越来越频发,但是当GC的时候所有的线程都是暂停状态的,需要处理的对象数量越多耗时越长,所以这也会造成卡顿。那么我们就可以针对集合类泄漏、单例/静态变量造成的内存泄漏 、匿名内部类/非静态内部类、以及资源未关闭造成的内存泄漏做出相应得策略。
Android进阶学习知识点就总结到这里了,大家在复习这些知识点的时候,不要只过一遍最好多系统的复习几次,在脑中构建出一个知识框架,这样知识就能牢牢地掌握在心里!
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
IT程序员一般工作到多少岁?
程序员年龄一般不会超过35岁,只要学习能力和管理能力跟的上工作到四五十也没问题。年龄这个问题其实是大家比较关心的问题,因为大多数到了30多岁工作都6-8年,选择了转型,喜欢管理已经当了项目经理,口才比较好的可以转做产品经理,技术国营做架构等诸多职位变化,薪资待遇提升,30多岁坚守在代码一线的码农已经不多了。
32600
2020-03-16 14:53:32
当前如何选择大数据培训?
想要学习大数据参加培训是一个简单的捷径,但是由于每个人的吸收能力不同,导致很多人对此产生了疑问。有的人自学能力很强,所以可以考虑不参加培训,但是对于自主性差的人来说,参加培训就是必选的方式,那么该如何选择大数据培训呢?
6922
2020-05-11 09:33:28
什么样的人适合学IT编程?
众所周知,IT编程是一个高薪的职业选择。因此,我们不难发现培训机构有99%的学员是为了找更好的工作,才来学习IT编程。这些学员中不少人是完全盲目报班的,对于学IT编程缺乏具体的了解和规划。在许多培训机构口中,程序员似乎是一个没有任何学习门槛的职业。相信绝大多数初学者在入门之前都会有这样的困惑:什么样的人适合学IT编程?下面我们就从学历、年龄和性别三方面分析一下。
8851
2020-05-26 18:16:20
零基础学IT哪个行业好?
5G时代的来临,给本就蓬勃发展的IT行业注入了新的血液和发展动力。与其他行业相比,IT行业不受性别、年纪、学历等诸多条件的限制,只要你有过硬的技术,就能在职场上立于不败之地。因此,转行投身于IT行业的人日益增多,但是面对一个崭新的领域,不少人都难免产生这样的疑问:零基础学IT哪个行业好?下面我们就来盘点一下适合零基础学习的IT行业。
10449
2020-06-19 18:17:17
程序员常用的开发者工具有哪些?
从人工到自动化,从重复到创新,在技术演进的历程中伴随着开发者工具类产品的发展。本文总结了一些常用的开发者工具,希望以此帮助开发者们提高开发效率、更优雅的写代码。由于开发者涉及的技术领域众多,以后端开发者的视角盘点平时可能用得到的工具,介绍工具名称及使用场景。
8561
2021-05-18 11:19:41
