Binder系列第一篇:《从getSystemService()开始,开撸Binder通信机制》http://www.jianshu.com/p/1050... Binder系列第二篇:《能用【白话文】来分析Binder通信机制?》http://www.jianshu…
性能优化
终于要开始讲解 Activity 的启动流程了,Activity 的启动流程相对复杂一下,涉及到了 Activity 中的生命周期方法,涉及到了 Android 体系的 CS 模式,涉及到了 Android 中进程通信 Binder 机制等等
数据结构
Binder系列第一篇:《从getSystemService()开始,开撸Binder通信机制》http://www.jianshu.com/p/1050... Binder系列第二篇:《能用【白话文】来分析Binder通信机制?》http://www.jianshu…
框架
Android系统当中的Binder消息传递无处不在,从运行一个新应用到发送一个常见的TIME PICK广播,再到注册一个ContentObserver去监听短信数据的变化,这些功能都须要使用到Binder通讯。正如”凡人必有一死”,system_server进程虽然只要手机保持开机状态就会存在,可是普通应用不管优先级多么高,当系统内存匮乏、用户手动杀死应用进程又或者是应用出现不能解决的BUG直接Force Close了。这时,做为进程通讯服务端的应用既然死亡了,那么对应的客户端相应的服务端以前保存下来的数据就没有必要保存了。不然的话,应用生老病死之间,若是手机一直不关机,system_server一直在存活期间也不清除死亡进程的遗留信息,那么这样的手机系统使用起来会形成内存泄露,系统资源会慢慢被耗尽直至用户能察觉到的系统卡顿出现。
socket
按计划原本从这章开始写四大组件的启动过程的,可是看看源码结构发现为了说的更明白仍是先写一点系统framework层启动的内容,帮助理解四大组件的启动以及管理过程。咱们知道四大组件管理是经过一些服务以及线程实现的,因此先把一些基本概念弄清楚比较好,好比AMS(ActivityMa…
函数
Binder 是 Android 系统进程间通讯(IPC)方式之一。Linux 已经拥有管道,system V IPC,socket 等 IPC 手段,却还要倚赖 Binder 来实现进程间通讯,说明 Binder 具备无可比拟的优点。深刻了解 Binder 并 将之与传统 IPC 作对比有助于咱们深刻领会进程间通讯的实现和性能优化。本文将对 Binder 的设计细节作一 个全面的阐述,首先经过介绍 Binder 通讯模型和 Binder 通讯协议了解 Binder 的设计需求;而后分别阐 述 Binder 在系统不一样部分的表述方式和起的做用;最后还会解释 Binder 在数据接收端的设计考虑,包括 线程池管理,内存映射和等待队列管理等。经过本文对 Binder 的详细介绍以及与其它 IPC 通讯方式的对比, 读者将对 Binder 的优点和使用 Binder 做为 Android 主要 IPC 方式的缘由有深刻了解。
源码分析
本篇文章主要讨论窗口坐标系统、Z序肯定,Choreographer、WindowToken、WindowState、WindowManagerService中的关键成员等知识。
性能
因为四大组件的启动都涉及到进程的启动,所以咱们这章先讲一下进程启动流程,而后再讲四大组件的启动流程。 基础知识 Android应用程序框架层建立的应用程序进程具备两个特色,一是进程的入口函数是ActivityThread.main,二是进程自然支持Binder进程间通讯机制;这…
学习
深刻讲解 Android 的 Binder 机制
优化
分析这个过程不是单纯为跟一遍函数调用的流程,而是更好的理解日常用到的一些方法、对象的初始化时间,对象建立的个数,方法的前后顺序,以及每一个类,方法背后的做用和目的。
线程
相关文章 Android系统启动流程系列 Android应用进程系列 Android深刻四大组件系列 Android深刻解析AMS系列 前言 关于AMS,原计划是只写一篇文章来介绍,可是AMS功能繁多,一篇文章的篇幅远远不够。这一篇咱们接着来学习与AMS相关的ActivityTa…
此前我用多篇文章介绍了WindowManager,这个系列咱们来介绍WindowManager的管理者WMS,首先咱们先来学习WMS是如何产生的。本文源码基于Android 8.0,与Android 7.1.2相比有一个比较直观的变化就是Java FrameWork采用了Lam…
直观地探述 Window、Activity、View 之间的关系
Android Binder 机制是安卓应用运行的基础,一个应用的运行须要没法避免地和系统提供的 Binder 作交互。Android 系统以服务(Service)的方式暴露出不少 Binder 对象,准确的说咱们拿到的是 Binder 代理对象(BinderProxy),真正的 Binder 对象运行于安卓系统进程中(system_process)。咱们的应用以夸进程的方式调用系统提供的各类服务,一般以 Context.getSystemService() 的方式获取系统服务,常见的有 ActivityManager, AlarmManager, InputMethodManager, ConnectivityManager, LayoutInflater 等等,其中有一部分是普通对象,大部分是对系统 Binder 对象的封装。那应用又是如何拿到系统的 Binder 对象的呢?若是咱们要拿到其余应用进程的 Binder 对象通常会使用 ServiceConnection 链接其余进程的 Service 拿到 IBinder。然而系统的 IBinder 是用 ServiceManager 暴露给应用进程的。下面以获取 InputMethodManager 为例分析应用是如何获取系统 IBinder 对象的。
scrollTo和scrollBy只是移动本身的内容. 也就是若是ViewGroup设置scrollTo或者scrollBy的话,只有它的子View会有位移效果.若是是TextView设置scrollTo或者scrollBy的话只会让它内部的文字发生位移. scrollBy仍是…
阅读Android源码的好处有不少,能够加深咱们对系统的了解,能够参考牛人优雅的代码实现,能够从根本上找出一些bug的缘由...咱们应该庆幸Android是开源的,全部的功能均可以看到实现,全部的bug都能追踪溯源。 我想你们或多或少据说过Android源码开源项目,即AOSP…
窗口管理能够说是Android系统中最复杂的一部分,主要是它涉及的模块比较多,虽说是窗口管理,但除了WindowManagerService还包括SurfaceFlinger服务、Linux的共享内存及tmpfs文件系统、Binder通讯、InputManagerService…
以前分析说过,WindowManagerService只负责窗口管理,并不负责View的绘制跟图层混合,本文就来分析WMS究竟是怎么管理窗口的。初接触Android时感受:Activity彷佛就是Google封装好的窗口,APP只要合理的启动新的Activity就打开了新窗口,这…
从问题出发,每每能更明确的找到所求。本文将带着一个个的问题,结合源码,逐步解析Activity、Window、View的三者关系。
ActivityManagerService 在 Android 系统中扮演着极其重要的角色,主要的做用就是经过进程间通讯的方式来调度 Activity 的生命周期,本文对于这部分有着较为详细的描述,但愿这篇文章可以帮你了解一些 framework 层的知识。