范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Android面试必备SystemAppActivity启动过程

  Android 系统启动过程
  从系统层看:  linux 系统层  Android 系统服务层  Zygote
  从开机启动到 Home Launcher:  启动 bootloader (小程序;初始化硬件)  加载系统内核 (先进入实模式代码再进入保护模式代码)  启动 init 进程(用户级进程 ,进程号为1)  启动 Zygote 进程(初始化Dalvik VM等)  启动 Runtime 进程  启动本地服务(system service)  启动 HomeLauncher  详细解析
  Android系统完整的启动过程,从系统层次角度可分为 Linux 系统层、Android 系统服务层、Zygote进程模型三个阶段;从开机到启动 Home Launcher 完成具体的任务细节可分为七个步骤,下面就从具体的细节来解读 Android 系统完整的初始化过程。
  一、启动BootLoader
  Android 系统是基于 Linux 操作系统的,所以它最初的启动过程和 Linux 一样。当设备通电后首先执行 BootLoader 引导装载器,BootLoader 是在操作系统内核运行之前运行的一段小程序。通过这段小程序初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境引导进入合适的状态,以便为最终调用操作系统内核准备好正确的运行环境。
  而Linux系统启动时:  首先要加载 BIOS 的硬件信息,并获取第一个启动设备的代号  读取第一个启动设备的MBR的引导加载程序(lilo、grub等)的启动信息。  加载核心操作系统的核心信息,核心开始解压缩,并且尝试驱动所有的硬件设备。
  .....
  在嵌入式系统中,通常不会有像 BIOS 那样的固件程序,因此整个系统的加载任务都是通过 BootLoader 完成的。
  二、加载系统内核
  Linux 内核映像通常包括两部分代码,分别为实模式代码和保护模式代码。当 BootLoader 装载内核映像到代码段内存时,分别放置实模式代码和保护模式代码到不同的位置,然后进入实模式代码执行,实模式代码执行完成后转入保护模式代码。
  实模式和保护模式的概念再次不做过多解释,读者可以自行查阅资料。
  三、启动Init进程
  当系统内核加载完成之后,会首先启动 Init 守护进程,它是内核启动的第一个用户级进程,它的进程号总是 1。Init 进程启动完成之后,还负责启动其他的一些重要守护进程,包括:
  Usbd 进程(USB Daemon):USB 连接后台进程,负责管理 USB 连接。
  adbd 进程(Android Debug Bridge Daemon):ADB 连接后台进程,负责管理 ADB 连接。
  debuggerd 进程(Debugger Daemon) :调试器后台进程,负责管理调试请求及调试过程。
  rild 进程 (Radio Interface Layer Daemon):无线接口层后台进程,负责管理无线通信服务。
  四、启动Zygote进程
  Init 进程和一些重要的守护进程启动完成之后,系统启动 Zygote 进程。Zygote 进程启动后,首先初始化一个 Dalvik VM实例,然后为它加载资源与系统共享库,并开启 Socket 监听服务,当收到创建Dalvik VM 实例请求时,会通过COW(copy on write)技术最大程度地复用自己,生成一个新的Dalvik VM 实例。Dalvik VM 实例的创建方法基于 linux 系统的 fork 原理。
  其实,我个人理解,Zygote 进程就相当于Linux系统中的 fork 进程。由它可以在系统运行期间,接收到创建虚拟机请求时,孵化 Dalvik VM实例。Zygote 进程孵化 Dalvik VM 实例流程如下图所示:
  图1 Zygote进程孵化Dalvik VM实例流程
  五 、启动Runtime进程
  在 Zygote 进程启动完成之后,Init 进程会启动 Runtime 进程。Runtime 进程首先初始化服务管理器(Service Manager),并把它注册为绑定服务(Binder services)的默认上下文管理器,负责绑定服务的注册与查找。然后 Runtime 进程会向 Zygote进程发送启动系统服务(System Service)的请求,Zygote 进程收到请求后,会"孵化"出一个新的 Dalvik VM 实例并启动系统服务进程。Runtime 进程的启动流程如下图所示:
  图2 Runtime进程启动流程图
  六、启动本地服务
  System Service 会首先启动两个本地服务(由C或C++编写的native服务),Surface Flinger 和Audio Flinger,这两个本地系统服务向服务管理器注册成为 IPC 服务对象,以便在需要它们的时候很容易查找到。然后 SystemService 会启动一些 Android 系统管理服务,包括硬件服务和系统框架核心平台服务,并注册它们成为 IPC 服务对象。本地服务进程的启动流程如下图所示:
  图3 SystemService启动本地服务流程图
  七、启动Home Laucher
  当 SystemService 加载了所有的系统服务后就意味着系统就准备好了,它会向所有服务发送一个系统准备完毕(systemready) 广播。SystemService 系统服务进程的启动流程如图3所示。当ActivityManagerService 接收到 systemready 广播后,会向Zygoute进程发送创建Dalvik 虚拟机实例的请求,Zygoute 进程会负责生成一个新的 Dalvik 虚拟机实例,然后 ActivityManagerService 在系统中查找具有  属性的Activity,并启动它。ActivityManagerService 同时也会使用同样的方法启动 Contact 应用程序。
  图4 启动Home Laucher流程图  APk 安装过程
  Android应用安装有如下四种方式:
  1.系统应用安装――开机时完成,没有安装界面
  2.网络下载应用安装――通过market应用完成,没有安装界面
  3.ADB 工具安装――没有安装界面。
  4.第三方应用安装――通过SD卡里的APK文件安装,有安装界面,由 packageinstaller.apk 应用处理安装及卸载过程的界面。
  应用安装的流程及路径
  应用安装涉及到如下几个目录:
  system/app :系统自带的应用程序,获得adb root权限才能删除
  data/app :用户程序安装的目录。安装时把 apk文件复制到此目录
  data/data :存放应用程序的数据
  data/dalvik-cache:将 apk中 的 dex 文件安装到 dalvik-cache 目录下(dex 文件是 dalvik 虚拟机的可执行文件,其大小约为原始 apk 文件大小的四分之一)
  安装过程
  复制 APK 安装包到 data/app 目录下,解压并扫描安装包,把 dex 文件(Dalvik字节码)保存到 dalvik-cache 目录,并在 data/data 目录下创建对应的应用数据目录。  App 启动过程
  这里以启动微信为例子说明  Launcher 通知 AMS 要启动微信了,并且告诉AMS要启动的是哪个页面也就是首页是哪个页面。  AMS 收到消息告诉 Launcher 知道了,并且把要启动的页面记下来。  Launcher 进入Paused状态,告诉 AMS,你去找微信吧。
  上述就是 Launche r和 AMS 的交互过程  AMS 检查微信是否已经启动了也就是是否在后台运行,如果是在后台运行就直接启动,如果不是,AMS 会在新的进程中创建一个ActivityThread 对象,并启动其中的 main 函数。  微信启动后告诉 AMS,启动好了。  AMS 通过之前的记录找出微信的首页,告诉微信应该启动哪个页面。  微信按照AMS通知的页面去启动就启动成功了。  Activity启动过程
  Activity 启动过程是由 ActivityMangerService(AMS) 来启动的,底层 原理是 Binder实现的 最终交给 ActivityThread 的 performActivity 方法来启动它
  ActivityThread 大概可以分为以下五个步骤  通过 ActivityClientRecoed 对象获取 Activity 的组件信息  通过 Instrument 的 newActivity 使用类加载器创建 Activity 对象  检验 Application 是否存在,不存在的话,创建一个,保证 只有一个 Application  通过 ContextImpl 和 Activity 的 attach 方法来完成一些初始化操作  调用 oncreat 方法。  最后
  在这里我再分享一份由多位大佬亲自收录整理的Android学习PDF+架构视频+面试文档+源码笔记,高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料
  这些都是我现在闲暇时还会反复翻阅的精品资料。里面对近几年的大厂面试高频知识点都有详细的讲解。相信可以有效地帮助大家掌握知识、理解原理,帮助大家在未来取得一份不错的答卷。
  当然,你也可以拿去查漏补缺,提升自身的竞争力。
  如果你有需要的话,只需私信我【进阶】即可获取

vivoXNote深度体验意想不到的大意想不到的好用随着全面屏手机的普及,就会发现6。5英寸左右的屏幕已经不再是什么新鲜事,也正是因为屏幕尺寸的变大,我们日常所使用的APP也在不知不觉地适配了大屏分辨率,大屏可以带给我们更多的显示内新机iQOONeo6一文看懂2799元起新骁龙8加持4月13日晚1930,iQOONeo6新品发布会正式举行。该机搭载新一代骁龙8移动平台独显芯片Pro,内置4700mAh电池支持80W双电芯快充,最低起售价2799元。更详细的发布统计韩国平均每2人拥有一辆汽车,近9成为本国产韩国亚洲日报4月13日消息,一项统计显示,韩国累计汽车登记数量超过2500万辆,平均每2。06人拥有一辆,接近9成产自本土。据韩国国土交通部13日消息,截至今年第一季度,韩国汽车累有钱就能造车?!新能源造车的门槛有多低?近两年随着新能源车的迅速发展,不少人盯上了这块刚打开的蛋糕,不仅众多车企开始转型,就连手机商电器商也开始加入战局,最为明显的就是小米华为美的等品牌,但是造车真的那么容易吗?从目前的三大运营商报团拒绝价格战,难料杀出一个全民优打自从2019年10月开始,国内就已经正式进入了5G商用时代,但是为什么至今已经有两年多的时间了,5G套餐还是那样的鲜有人问津呢?用的人并不多。最近网上就有网站对此展开了关于用户为何泽森科工获数千万元天使轮融资,高榕资本领投青松基金跟投2022年4月13日,泽森科工(ZENUSTECH)宣布完成数千万元天使轮融资,由高榕资本领投青松基金跟投。该公司自研出国内首款集物理仿真生物仿真程序化几何程序化材质实时渲染功能于打破中国混动市场固有格局,魏牌拿铁DHT2月销量环比增长52日前,魏品牌官方公布了旗下车型2月销量,数据显示,咖啡系列的明星车型拿铁DHT销量达到2387台,环比增长52,在智能DHT和咖啡智能两大平台优势的加持下,凭借着卓越的产品力,展现蔚来停产背后,新能源汽车供应链朝着失控方向,蒙眼狂奔蔚来因疫情停产,创始人李斌人在上海,在微信群用葱换盐。大致情况就是这样4月9日,蔚来在其官方APP上发文表示,自3月份以来,因为疫情原因,公司位于吉林上海江苏等多地的供应链合作伙伴前以太坊开发者VirgilGriffith被判服刑63个月支付10万美元罚款前以太坊开发者VirgilGriffith因帮助朝鲜人使用加密货币逃避制裁,将在监狱服刑63个月,并支付10万美元的罚款。2019年4月,他曾在平壤的一个加密货币会议上发表了演讲,小鹏汽车加速扩张补能!11月上线111座超充站,覆盖228城文懂车帝原创彩丽美懂车帝原创行业随着电动汽车销量攀升,充电桩的建设也不断加快。日前,懂车帝从官方获悉,今年11月,小鹏汽车完成了111座小鹏品牌超充站上线,环比增长20。1同时,上极氪001一如从前,持续进化后的ZEEKROS2。0是否今非昔比?不可否认,当前的汽车已经不单单是出行工具,更是智能化的移动空间,越来越多的购车者不再单纯看车辆优美的外观和硬件配置,智能化配置和驾驶辅助技术也越来越受到消费者更多的关注,同时也促进
苹果躲得过罗永浩的收购,但未必躲得过隔壁老王跨界营销罗永浩在锤子科技做手机的时候,留给手机行业最大的情怀梦想是收购苹果。但是,随着罗永浩在今年4月1日正式开始电商直播带货以来,远离是非最多的手机圈之后,在电商直播带货领域的转型还是非诉今日油条,互联网大厂对商标异议,霸道之举?正值螃蟹膏肥肉美的时节,螃蟹,横着走,因此,是耍横的代表动物。但是,横归横,如果在每个方向都横着走,未必能形成合力。企业再大,也都是有自己不能做的领域,也就是说,企业都是有边界的。为推5G套餐,运营商下架4G套餐,此举妥当吗?2019年6月6日工业和信息化部向中国移动中国电信中国联通和中国广电发放5G商用牌照。一年多的时间,在5G网络建设上已经取得了初步成绩2020年5月17日,工业和信息化部副部长陈肇社区团购确实很便捷,但也还要照顾老人线下购物需要平时周末,总还是习惯去超市或者菜市场选购日常食材。今天因为下雨,加上前天踢球腿有些酸痛,于是考虑试一下最近热议的社区团购服务。毕竟,随着滴滴美团拼多多等企业都相继强势发力社区团购,华为Mate40成绝版?收藏还是套利,各取所需2020年10月22日,华为海外发布会如期进行,此次发布会上发布了一系列新品,新品中最受大家关注的是华为Mate40系列手机。而自2020年9月15日美国对华为全面断供禁令以来,华周围20里老戏迷聚在小院里吼秦腔农村老人的生活也精彩在陕西关中一个村子的农家院里,每到下午就变的非常热闹,方圆20里内的戏迷们都来到了这里,聚在一起吹拉弹唱吼秦腔,让周围爱听戏的村民们也过足了戏瘾。这个由附近村民自发组成的业余戏班中西安大兴善寺腊梅花风雪中怒放吸引香客驻足拍照赏花西安大兴善寺的两颗腊梅花在风雪中怒放,吸引很多香客驻足观赏拍照。今天周末,西安小雪,很多市民外出赏雪。大兴善寺是隋唐皇家寺院,中国佛教八宗之一密宗祖庭,隋唐帝都长安三大译经场之一。大雪封地觅食难好心市民寺院喂鸽子吸引小麻雀来争食去雪后的西安兴善寺参观,看到好心的市民自带鸟食在喂鸽子,吸引许多小麻雀前来争食。这几天大雪覆盖,鸽子与鸟儿觅食困难,很多好心人备了鸟食出来喂鸽子及各种鸟。鸽子与小麻雀在争食地面上的置身西安最热闹的商业街区风雪中释放浓厚盛唐景致寻访大兴善寺位于西安市小寨兴善寺西街的大兴善寺,是隋唐时的皇家寺院,中国佛教八宗之一密宗祖庭。始建于晋武帝泰始二年(226年)的大兴善寺,距今已1700余年,是西安现存历史最悠久的佛寺之一。近两只待售小猫颜值高引围观不是纯种售1600元都说价格高逛西安西仓集市,见一群人在围着一对儿出售的小猫在看,凑近一看这对小猫果然挺漂亮的。老板讲这两只是加菲猫,要价1600元一只,两只小猫颜值确实挺高,很讨人喜欢。这只黑色的小猫活泼好动农村老汉7元买一斤烟叶能抽一个月还没痰抽烟卷费用太高承担不起在陕西周至的一个集会上,十几个售卖旱烟叶的商贩在路边一字排开,吸引很多抽烟袋的老汉在这里品尝购买。只有在农村的集市上,还能看到老式的称,不用烟袋的烟民,也可以用纸自己卷一根烟品尝。