自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

莹波&微步

且随疾风前行

  • 博客(22)
  • 收藏
  • 关注

转载 Android-6.0之PMS的守护进程installd

本文转载于:http://www.iloveandroid.net/2016/06/30/Android_PackageManagerService-11/有一个名为installd的native 守护进程一直默默的为PMS服务。现在就来看看它究竟在做什么。installd定义在init.rc中:1service installd

2017-04-22 16:47:04 1236

转载 Android-6.0之PMS卸载APK

本文转载于:http://www.iloveandroid.net/2016/06/20/Android_PackageManagerService-2/前面详细介绍了如何安装一个apk,现在分析PMS卸载APK的过程。卸载一个app,要指明卸载哪个用户中的该app。卸载的过程无非就是删除沙箱目录,删除/data/app/包名,以及删除其在PMS中的相关信息,比如从

2017-04-22 16:44:55 1225

转载 Android-6.0之PMS安装APK下篇

本文转载于:http://www.iloveandroid.net/2016/06/20/Android_PackageManagerService-2/安装一个apk分为:检查权限,复制文件,装在应用。前面分析了前两步,现在开始分析app的装载。这一步中主要完成将dex转换为ART虚拟机的oat格式的执行文件,并为应用创建数据沙箱目录,最后把应用的信息装载进PMS

2017-04-22 16:44:00 2802

转载 Android-6.0之PMS安装APK上篇

本文转载于:http://www.iloveandroid.net/2016/06/20/Android_PackageManagerService-2/现在开始正式分析Android如何安装一个APK.当使用Intent安装一个Android存储中的一个apk文件时,实际上是调用Android系统一个内部应用packageinstaller来完成的。这个内置系统应

2017-04-22 16:42:05 3410 1

转载 Android-6.0之PMS安装APK前奏

本文转载于:http://www.iloveandroid.net/2016/06/20/Android_PackageManagerService-2/前面介绍了PMS是如何启动的,现在介绍Android系统是如何安装一个APK的。前面介绍PMS时,已经确定了PMS会注册成为一个service,而Android系统中需要使用一个service时,通常要找到其客户端

2017-04-22 16:40:25 1103

转载 Android-6.0之PMS解析下篇

本文转载于:http://www.iloveandroid.net/2016/06/20/Android_PackageManagerService-2/前面介绍了PMS启动的时候,扫描系统app目录时的代码,现在分析PMS启动时,如何扫描用户安装的app。继续PMS 构造方法123//调用installd执行/system/e

2017-04-22 16:39:21 1443

转载 Android-6.0之PMS解析中篇2

本文转载于:http://www.iloveandroid.net/2016/06/20/Android_PackageManagerService-2/本篇文章主要针对上篇文章中两个未分析的方法进行分析。APK文件的解析上一篇中的scanPackageLI分析的开头12345678910private P

2017-04-22 16:38:35 950

转载 Android-6.0之PMS解析中篇1

本文转载于:http://www.iloveandroid.net/2016/06/20/Android_PackageManagerService-2/本篇文章主要介绍PMS扫描和解析APK文件。继续分析PMS的构造方法。12345678910111213141516mHandlerThread =

2017-04-22 16:36:36 2092

转载 Android-6.0之PMS解析上篇

本文转载于:http://www.iloveandroid.net/2016/06/20/Android_PackageManagerService-2/前面介绍了pm命令如何使用以及PMS运行时的一些规则和行为,现在就可以尽情享受PMS的代码了。PMS的入口点PMS是由SystemServer启动的。1Android6

2017-04-22 16:35:22 2120 1

转载 PMS运行时的一些规则

本文转载于:http://www.iloveandroid.net/2016/06/20/Android_PackageManagerService-2/前面介绍了pm命令如何使用,从侧面也反应出了PMS提供了哪些功能。那么在真正分析源码之前,还要了解一下PMS的一些默认规则。本文主要介绍与PMS相关的目录与文件,以及PMS操作它们的规则。APK文件路径

2017-04-22 16:34:03 1256

转载 初探Android的PMS服务

本文转载于:http://www.iloveandroid.net/2016/06/20/Android_PackageManagerService-1/Android系统中PackageManagerService简称PMS,主要负责各种APK的安装,卸载,优化和查询。Android系统中,pm工具是PMS的一个展现命令。通过了解pm的使用,可以了解PMS究竟提供了哪些具体的

2017-04-22 16:32:28 2816

转载 Android6.0之AMS管理Service前奏

前面分析了AMS使如何启动一个Activity的,现在开始分析AMS如何启动一个service。那么在分析AMS管理Service的源码之前,先要知道在App有哪些使用Service的方法。概述Service是Android中实现程序后台运行的解决方案,非常适合用于去执行哪些不需要和用户交互而且还要求长期运行的任务。一般情况下,service和activity都是运行在

2017-04-18 17:37:49 617

转载 Android6.0之AMS启动App下篇

前面已经分析App启动的时候,进程是如何创建的了。也知道了App进程创建之后,首先执行的是ActivityThread类中的main方法。也就是说ActivityThread.main方法是App执行代码的总入口点。ActivityThread类在AMS启动App上篇中已经介绍过这个ActivityThread类了,这是一个非常重要的类:12345

2017-04-18 17:36:01 1952

转载 Android6.0之AMS启动app中篇之创建app进程

前面分析到了ActivityStackSupervisor类中的startActivityUncheckedLocked方法,该方法主要是为要启动的activity准备一个task:有可复用的task,就直接使用;没有的话,就先寻找一个合适的ActivityStack,移动到前台后创建一个新的Task.紧接着调用ActivityStack的startActivityLocked()方法继续启动.

2017-04-18 17:34:25 1341

转载 Android6.0之AMS如何启动app中篇之Task的管理

前面分析到了ActivityStackSupervisor类中的startActivityLocked方法,现在接着分析.startActivityLocked利用传入的IApplicationThread caller,从AMS中得到调用者进程信息,也就是Launcher进程的信息.123456789101112131415

2017-04-18 17:32:47 3094 1

转载 Android6.0之Activity的管理与启动模式

前面分析到了ActivityStackSupervisor类中的startActivityLocked方法,在分析这个方法前,先介绍一些关于Activity的知识,以方便我们理解代码.TaskTask是一个栈,它的作用是以先进后退的方式组织Activity。Android把用户一次操作相关的Activity按照先后顺序保存在一个Task中,这样当用户按back键时,就能

2017-04-18 17:31:24 1878

转载 Android6.0之AMS如何启动app上篇

前面简单介绍了AMS的启动过程。现在从启动一个APP开始分析AMS在这个过程中究竟做了哪些事情,从而找出AMS中重要的数据结构。启动App,通常是启动该App的一个Activity,一般是主Activity.用户从Launcher程序点击应用图标可启动应用的入口Activity,Activity启动时需要多个进程之间的交互,如下图所示:其中AMS进程实际上是System

2017-04-18 17:29:53 1858

转载 Android6.0之Intent使用与源码分析

在一个Android应用中,主要是由四种组件组成的。而这四种组件是独立的,它们之间可以互相调用,协调工作,最终组成一个真正的Android应用。在这些组件之间的通讯中,主要是由Intent协助完成的。鉴于Intent的特殊地位,有必要首先分析其机制,这样有利于后续分析AMS如何管理四大组件。intent概述Intent负责对应用中一次操作的动作、动作涉及的数据、附加数据进行描述

2017-04-18 17:21:10 2184

转载 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 1934

转载 Android6.0之AMS数据结构梳理

正式分析AMS代码之前,还是先搞清楚与AMS相关的数据结构吧。ActivityManager上一篇中提到上层开发中使用如下代码获得AMS的一个代理:1ActivityManager am =(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);官方文档中

2017-04-18 17:18:57 1254

转载 Android6.0之AMS前奏

ActivityManagerService是Android提供的一个用于管理Activity以及其他组件运行状态的系统进程,简称AMS.AMS主要作用:Activity及其他三大组件的运行状态管理、进程管理、内存管理 (主要)查询组件当前的运行情况提供了系统运行时的查询通过am命令来实际感知一下AMS给我们提供了哪些功能。a

2017-04-18 17:18:01 1158

转载 Android消息处理机制之Handler

Android进程内线程之间的通信广泛使用到了Handler,handler也是Android独有的消息处理机制。最常见的莫过于使用handler更新ui了。现在就来分析Handler机制。Android进程内线程之间的通信 如下图所示:Android中当一个app运行之后,至少有一个主线程,也就是通常说的UI线程。如果还有其他线程要更新UI,那么试图更新UI的线程,就

2017-04-18 17:16:39 658

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除