Dalvik、ART虚拟机

概要

Dalvik 是 Google 公司自己设计用于 Android 平台的虚拟机。它可以支持已转换为**.dex 格式**的 Java 应用程序的运行,.dex 格式是专为Dalvik 设计的一种压缩格式,适合内存和处理器速度有限的系统。

Dalvik 经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik应用作为一个独立的 Linux 进程执行。独立的进程可以防止在虚拟机 崩溃的时候所有程序都被关闭。

2014 年 6 月 25 日,Android L 正式亮相于召开的谷歌 I/O 大会,Android L 改 动幅度较大,谷歌将直接删除 Dalvik,代替它的是传闻已久的 ART。

Dalvik与JVM的区别

Read More

Framework概要

概述

启动时init进程加载init.rc文件,启动zegote进程,zegote就是app_process进程,app_process进程装在Android的系统Class、
装载需要的底层so库,装载相应资源;app_process启动system_server进程,
system_server进程中创建了AMS、PMS、WMS。app_process与system_server进程通过socket通讯。

启动一个App时,执行ActivityThread的main方法,初始化Context、Resource、AssetManager等基础设施。运行主线程Looper。

在system_server中会启动以下服务

SystemServiceManager

PowerManagerService

WebViewUpdateService

DisplayManagerService

ActivityManagerService

管理Activity,在App进程启动时,通过Binder,在ActivityThread中进行Activity的管理。

Read More

Android中的ClassLoader

概述

  • BootClassLoader:主要用于加载系统的类,包括 java 和 android 系统的 类库,和 JVM 中不同,BootClassLoader 是 ClassLoader 内部类,
    是由 Java 实现的,它也是所有系统 ClassLoader 的父 ClassLoader
  • PathClassLoader:用于加载 Android 系统类和开发编写应用的类,只能加载已经安装应用的 dex 或 apk 文件,也是 getSystemClassLoader 的返回对象
  • DexClassLoader:可以用于加载任意路径的 zip,jar 或者 apk 文件,也是进行安卓动态加载的基础
Read More