Android-AMS
疾风-Bevis
这个作者很懒,什么都没留下…
展开
-
Android消息处理机制之Handler
Android进程内线程之间的通信广泛使用到了Handler,handler也是Android独有的消息处理机制。最常见的莫过于使用handler更新ui了。现在就来分析Handler机制。Android进程内线程之间的通信 如下图所示:Android中当一个app运行之后,至少有一个主线程,也就是通常说的UI线程。如果还有其他线程要更新UI,那么试图更新UI的线程,就转载 2017-04-18 17:16:39 · 645 阅读 · 0 评论 -
Android6.0之AMS管理Service前奏
前面分析了AMS使如何启动一个Activity的,现在开始分析AMS如何启动一个service。那么在分析AMS管理Service的源码之前,先要知道在App有哪些使用Service的方法。概述Service是Android中实现程序后台运行的解决方案,非常适合用于去执行哪些不需要和用户交互而且还要求长期运行的任务。一般情况下,service和activity都是运行在转载 2017-04-18 17:37:49 · 599 阅读 · 0 评论 -
Android6.0之AMS启动App下篇
前面已经分析App启动的时候,进程是如何创建的了。也知道了App进程创建之后,首先执行的是ActivityThread类中的main方法。也就是说ActivityThread.main方法是App执行代码的总入口点。ActivityThread类在AMS启动App上篇中已经介绍过这个ActivityThread类了,这是一个非常重要的类:12345转载 2017-04-18 17:36:01 · 1914 阅读 · 0 评论 -
Android6.0之AMS启动app中篇之创建app进程
前面分析到了ActivityStackSupervisor类中的startActivityUncheckedLocked方法,该方法主要是为要启动的activity准备一个task:有可复用的task,就直接使用;没有的话,就先寻找一个合适的ActivityStack,移动到前台后创建一个新的Task.紧接着调用ActivityStack的startActivityLocked()方法继续启动.转载 2017-04-18 17:34:25 · 1316 阅读 · 0 评论 -
Android6.0之AMS如何启动app中篇之Task的管理
前面分析到了ActivityStackSupervisor类中的startActivityLocked方法,现在接着分析.startActivityLocked利用传入的IApplicationThread caller,从AMS中得到调用者进程信息,也就是Launcher进程的信息.123456789101112131415转载 2017-04-18 17:32:47 · 3081 阅读 · 1 评论 -
Android6.0之Activity的管理与启动模式
前面分析到了ActivityStackSupervisor类中的startActivityLocked方法,在分析这个方法前,先介绍一些关于Activity的知识,以方便我们理解代码.TaskTask是一个栈,它的作用是以先进后退的方式组织Activity。Android把用户一次操作相关的Activity按照先后顺序保存在一个Task中,这样当用户按back键时,就能转载 2017-04-18 17:31:24 · 1845 阅读 · 0 评论 -
Android6.0之Intent使用与源码分析
在一个Android应用中,主要是由四种组件组成的。而这四种组件是独立的,它们之间可以互相调用,协调工作,最终组成一个真正的Android应用。在这些组件之间的通讯中,主要是由Intent协助完成的。鉴于Intent的特殊地位,有必要首先分析其机制,这样有利于后续分析AMS如何管理四大组件。intent概述Intent负责对应用中一次操作的动作、动作涉及的数据、附加数据进行描述转载 2017-04-18 17:21:10 · 2166 阅读 · 0 评论 -
Android6.0之AMS启动
现在可以分析AMS启动过程的代码了。AMS入口点上一篇文章已经找到了AMS启动的入口点:源码路径:1Android-6/frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java转载 2017-04-18 17:20:06 · 1914 阅读 · 0 评论 -
Android6.0之AMS数据结构梳理
正式分析AMS代码之前,还是先搞清楚与AMS相关的数据结构吧。ActivityManager上一篇中提到上层开发中使用如下代码获得AMS的一个代理:1ActivityManager am =(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);官方文档中转载 2017-04-18 17:18:57 · 1244 阅读 · 0 评论 -
Android6.0之AMS前奏
ActivityManagerService是Android提供的一个用于管理Activity以及其他组件运行状态的系统进程,简称AMS.AMS主要作用:Activity及其他三大组件的运行状态管理、进程管理、内存管理 (主要)查询组件当前的运行情况提供了系统运行时的查询通过am命令来实际感知一下AMS给我们提供了哪些功能。a转载 2017-04-18 17:18:01 · 1131 阅读 · 0 评论 -
Android6.0之AMS如何启动app上篇
前面简单介绍了AMS的启动过程。现在从启动一个APP开始分析AMS在这个过程中究竟做了哪些事情,从而找出AMS中重要的数据结构。启动App,通常是启动该App的一个Activity,一般是主Activity.用户从Launcher程序点击应用图标可启动应用的入口Activity,Activity启动时需要多个进程之间的交互,如下图所示:其中AMS进程实际上是System转载 2017-04-18 17:29:53 · 1843 阅读 · 0 评论