Android FrameWork

  1. Framework框架包含三个主要部分:服务端,客户端和Linux驱动
  2. 服务端包含两个重要类:
    • WindowManagerService(Wms):作用是为所有的应用程序分配窗口,并管理这些窗口,包括分配窗口的大小,调节窗口的叠放次序,隐藏或者显示窗口,此处的窗口并不是Window类,而是一个View或者ViewGroup
    • ActivityManagerService(Ams):管理所有应用程序中的Activity
  3. 客户端一些重要类:
    • ActivityThread类:该类为应用程序的主线程类,所有的APK应用程序都有且只有一个ActivityThread类,程序的入口为该类中的static main函数
    • PhoneWindow和DecorView类
    • WindowManager:负责与WindowManagerService交互
  4. Linux驱动主要包括两部分:SurfaceFlingger(SF)和Binder,每一个窗口都对应一个Surface,SF驱动的作用是把各个Surface显示在同一个屏幕上
  5. APK程序的运行过程:
    • 与普通Java程序一样,入口也是main方法,在ActivityThread类(UI主线程类)中
    • 调用prepareMainLooper为UI线程创建消息队列MessageQueue
    • 创建一个ActivityThread对象,在ActivityThread的初始化代码中创建一个Handler对象和一个ApplicationThread对象,ApplicationThread间接继承自Binder对象,它负责接收Ams的IPC调用,接收到调用后通过Handler把消息发送到消息队列
    • UI主线程调用Looper.loop方法异步的从消息队列中取出消息并执行响应操作
    • ActivityThread收到Ams发送的start某个Activity后,就会创建指定的Activity对象
  6. 在Android系统中,应用程序进程都是由Zygote进程孵化出来的,而Zygote进程是由Init进程启动的。Zygote进程在启动时会创建一个Dalvik虚拟机实例,每当它孵化一个新的应用程序进程时,都会将这个Dalvik虚拟机实例复制到新的应用程序进程里面去,从而使得每一个应用程序进程都有一个独立的Dalvik虚拟机实例
时间: 2024-10-13 16:00:20

Android FrameWork的相关文章

Android Framework 分析---消息机制Native层

在Android的消息机制中,不仅提供了供Application 开发使用的java的消息循环.其实java的机制最终还是靠native来实现的.在native不仅提供一套消息传递和处理的机制,还提供了自定义文件描述符的I/O时间的监听机制.下面我们从具体代码中分析一下. Native层的关键类: Looper.cpp.该类中提供了pollOnce 和wake的休眠和唤醒机制.同时在构造函数中也创建 管道 并加入epoll的机制中,来监听其状态变化. Looper::Looper(bool al

Android Framework 记录之二

原文地址:http://blog.csdn.net/banketree/article/details/24982021 接着上次的记录,续写. 23.services目录 文件 描述 class AlarmManagerService extends IAlarmManager.Stub { //定时管理服务 public class AppOpsService extends IAppOpsService.Stub {  // 程序选项服务 public class AppsLaunchFa

Android Framework 记录之一

简介 之前的研究太偏向应用层功能实现了,很多原理不了解没有深究,现在研究framework框架层了. 原文地址:http://blog.csdn.net/banketree/article/details/24718899 记录 1.下载源码,目录如下: 2.Android系统的层次如下: 3.项目目录简单分析如下: 4.telphony目录 文件 描述 CellIdentityCdma //描述电信通信标识 CellIdentityGsm 描述移动通信标识 CellIdentityLte 描述

.Net程序员玩转Android系列之二~Android Framework概要(1)

从windows操作系统说起 人们总是喜欢从将陌生的事物和自己所了解的东西关联起来,以加深对未知事物的了解,这一讲我们从windows操作系统说起,逐步引领带大家走入android的世界.写任何程序都需要知道程序运行的原理和环境,就比如开发winform程序,你至少需要知道操作系统的原理,CLR运行时,了解一些常用的C/C++库.诚然,你不需要全部了解得很清楚也能写出很不错的应用程序,但是你了解的越清楚,钻研得越透彻,那么你越能开发出适合于你所在平台的.更优化的应用程序.譬如在windows操作

Android Framework 分析---PackageManager 分析

在windowphone,ios和android中到目前为止,还是android的市场份额最大.个人认为除了google开源外,广大开发者早就了android的霸主地位.各位兄弟姐妹开发出各种各样的apk,才组成android的广阔天下.本篇主要分析一下android系统是针对处理这些apk的,主要涉及到pm这块的代码.分析这种底层服务,最好从android的开启启动流程中开始分析.因为这样才能更清楚的了解服务的启动流程. 1.在SystemServer.java 中启动PM android 开

如何从C++代码直接访问android framework层的WifiService

说到底,Java层的service就是就C++层的binder的封装,所以从原理上来讲通过C++代码直接访问android framework层的service是完全可能的,这篇文章以访问WifiService为例,讲解如何去实现这个功能. 费话少说,直接上代码: WifiTest.cpp #include <sys/types.h> #include <unistd.h> #include <grp.h> #include <binder/IPCThreadSt

android framework层 学习笔记(一)

大体结构 最近在研究android framework层的开发.  先来一张frame work的源码结构图 1  api 文件夹  不清楚用途,该目录下只有一个current.txt 内容看上去像代码,先放一放 2  cmds 文件夹,顾名思义是android 所支持的 command (命令) 最明显就是里面第一个文件夹就是am ,对应着android中的am 命令. 其他的命令里面有C语言写的也有java+C的. 3    core  文件夹这个文件夹下面有四个文件 java jni re

Android Framework 初探

最近工作任务不忙,学习一下Android Framework方面的知识. 一.介绍,是什么 Android的Framework是直接应用之下的一层,叫做应用程序框架层.这一层是核心应用程序所使用的API框架,为应用层提供各种API,提供各种组件和服务来支持我们的Android开发,包括ActivityManager,WindowManager,ViewSystem等.下面贴一张学习Android时常见的Android系统架构图: 二.有什么 Android Framework框架包含了3个主要部

[Android FrameWork 6.0源码学习] View的重绘过程之WindowManager的addView方法

博客首页:http://www.cnblogs.com/kezhuang/p/ 关于Activity的contentView的构建过程,我在我的博客中已经分析过了,不了解的可以去看一下 <[Android FrameWork 6.0源码学习] Window窗口类分析> 本章博客是接着上边那篇博客分析,目的是为了引出分析ViewRootImpl这个类.现在只是分析完了Window和ActivityThread的调用过程 从ActivityThread到WindowManager再到ViewRoo

怎样从C++代码直接訪问android framework层的WifiService

说究竟,Java层的service就是就C++层的binder的封装.所以从原理上来讲通过C++代码直接訪问android framework层的service是全然可能的,这篇文章以訪问WifiService为例,解说怎样去实现这个功能. 费话少说.直接上代码: WifiTest.cpp #include <sys/types.h> #include <unistd.h> #include <grp.h> #include <binder/IPCThreadSt