Android启动之生命周期流程

news/2024/11/24 13:36:23/

目录

一、简述

二、启动流程说明(一)

三、启动流程说明(二)

四、ServerThread常用组件的功能介绍


一、简述

第一步:启动Linux:

1.Bootloader

2.kernel

第二步:Android系统启动:入口为Init.rc(system/core/rootdir)

1./system/bin/servicemanager:Binder守护进程;

2.Runtime;

3.Zygote:app_process/App_main;

4.Start VM;

5.System Server;

6.Start Android Services:Register to ServiceManager;

7.Start Launcher;

第三步:应用程序启动:

1.运行PackagerManager


二、启动流程说明(一)

  1. Android的servicemanager文件位于/system/bin/servicemanager中,在系统启动一开始会通过源码为ServiceManager.java的文件实例化一个Daemon Process,用于在后台维护系统的运行;
  2. 启动/system/bin下的zygote的时候实际上启动了app_main.cpp,该系统文件CPP位于frameworks/base/cmds/app_process/app_main.cpp文件中;
  3. 在app_main.cpp调用了AndroidRuntime.cpp,如何AndroidRuntime.cpp通过JNI调用了ZygoteInit.java,ZygoteInit.java又调用了SystemServer.java;
  4. SystemServer.java通过JNI调用了com_android_server_systemService.app,然后通过运行system_init.cpp反过来调用SystemServer.java中的init2()这个方法,此时在init2()这个方法中调用了runtime->callStatic("com/android/server/SystemServer","init2")启动ServerThread线程。

三、启动流程说明(二)

服务线程ServerThread包含下面的功能:

  1. PowerManagerService:电源管理;
  2. ActivityMangerService:组件管理;
  3. WindowManagerService:窗口管理;
  4. PackageManagerService:应用程序是通过该Service启动的。

四、ServerThread常用组件的功能介绍

1.PowerManagerService:电源管理

PowerManagerService负责管理设备的电源相关功能,例如屏幕的开关、休眠模式、电池管理等。
获取PowerManager对象:在Activity或Service中使用以下代码获取PowerManager对象。

PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);//1.控制屏幕亮度:可以使用PowerManager对象的方法来控制屏幕亮度,例如:
// 将屏幕设置为全亮
powerManager.setBrightness(PowerManager.BRIGHTNESS_MAX);
// 将屏幕设置为最暗
powerManager.setBrightness(PowerManager.BRIGHTNESS_OFF);//2.控制休眠模式:可以使用PowerManager对象的方法来控制设备的休眠模式,例如:
// 进入休眠模式
powerManager.goToSleep(SystemClock.uptimeMillis());
// 唤醒设备
powerManager.wakeUp(SystemClock.uptimeMillis());


2.ActivityManagerService:组件管理

ActivityManagerService负责管理Android系统中的组件,例如Activity、Service、Broadcast Receiver等。它负责启动、管理和销毁这些组件,并提供与组件生命周期相关的功能。
启动Activity:可以使用Intent和Context的startActivity方法启动一个Activity,例如:

Intent intent = new Intent(this, MyActivity.class);
startActivity(intent);//1.启动Service:可以使用Intent和Context的startService方法启动一个Service,例如:
Intent intent = new Intent(this, MyService.class);
startService(intent);//2.注册Broadcast Receiver:可以通过在代码中注册Broadcast Receiver来接收系统广播消息,例如:
BroadcastReceiver receiver = new MyReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_BOOT_COMPLETED);
registerReceiver(receiver, filter);


3.WindowManagerService:窗口管理

WindowManagerService负责管理Android系统中的窗口,包括应用程序窗口、系统提示框、悬浮窗口等。它负责窗口的创建、显示、移动、调整大小等操作。
创建一个自定义窗口:可以通过创建一个自定义的View,并将其添加到WindowManager中来创建一个自定义窗口,例如:

WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
MyCustomView myView = new MyCustomView(this);
WindowManager.LayoutParams params = new WindowManager.LayoutParams();
// 设置窗口的位置、大小等参数
params.width = WindowManager.LayoutParams.WRAP_CONTENT;
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
params.gravity = Gravity.CENTER;
windowManager.addView(myView, params);


4.PackageManagerService:应用程序启动

PackageManagerService负责管理应用程序的安装、卸载、更新等操作。它提供了获取应用程序信息、启动应用程序等功能。
获取应用程序信息:可以使用PackageManager对象的方法来获取应用程序的信息,例如:

PackageManager packageManager = getPackageManager();
ApplicationInfo appInfo = packageManager.getApplicationInfo("com.example.app", 0);
String appName = appInfo.loadLabel(packageManager).toString();
Drawable icon = appInfo.loadIcon(packageManager);//1.启动应用程序:可以使用PackageManager对象的方法来启动一个应用程序,例如:
PackageManager packageManager = getPackageManager();
Intent intent = packageManager.getLaunchIntentForPackage("com.example.app");
if (intent != null) {startActivity(intent);
}

本文只是对Android启动生命周期流程的简要介绍,难免存在不足之处。如有任何错误或改进意见,请不吝指正和建议。


http://www.ppmy.cn/news/211394.html

相关文章

APT 下载工具

APT 下载工具可以实现软件自动下载、配置、安装二进制或者源码的功能。 APT 下载工具install命令结合在一起构成了 Ubuntu 下最常用的下载和安装软件方法。它解决了 Linux 平台下安装软件的一个缺陷,即软件之间相互依赖。APT 采用的 C/S 模式,也就是客户…

JD-GUI工具下载安装

jd-gui是一款可以反编译class文件的工具,有图形化界面,对于开发者来说非常好用。 下载地址:Releases java-decompiler/jd-gui 下载地址2:https://www.softpedia.com/get/Programming/Debuggers-Decompilers-Dissasemblers/JD-G…

adb工具下载及安装

adb工具下载 点击下载adb工具 https://qny.aoarasi.com/software/adb/platform-tools_r33.0.0-windows.zip adb 工具安装 下载后解压 platform-tools_r33.0.0-windows.zip 文件 cmd进入adb.exe所在路径(比如我的在:D:\software\platform-tools_r33.…

华为SmartKit工具下载

SmartKit 系统架构 下载链接: 华为 SmartKit 软件下载和补丁升级 - 华为SmartKit 分布式存储:包括软件下载、补丁升级、HedEx文档、配置手册、案例、工具、产品公告、视频、论坛等内容。https://support.huawei.com/enterprise/zh/distributed-storage/…

adb工具下载

完整的ADB工具包,总共有四个文件,两个exe后缀,两个dll后缀。 完整的工具包里面会有fastboot文件,是exe后缀的。使用之前,打开工具包看一下就行了,这就叫确认有fastboot,如果没有,那就…

使用抓包工具下载有下载限制的视频

准备工具 1.一台电脑 2.抓包工具——Fiddler(下载地址) 3.视频下载工具——VLC(下载地址) 个人链接(官网安装包): https://yiqingchen.lanzoui.com/b01bsb0vi 密码:14gg 第一步 安装Fiddler并设…

手把手教你git工具下载、安装与配置(图文超详细超简单)

一、git下载与安装 1、打开git官方地址:https://git-scm.com​​​​​​​​​​​ 根据自己电脑操作系统下载相应安装包。 点击downloads,选择自己电脑对应的操作系统 根据电脑配置下载32位或64位 2、安装过程 下载完成后,双击下载的软件…

御剑后台扫描工具下载、安装、使用教程

文章目录 御剑后台扫描工具下载、安装、使用教程御剑后台扫描工具 简介:一、御剑后台扫描工具 下载二、御剑后台扫描工具 安装三、御剑后台扫描工具 使用方法给御剑字典增加新规则 御剑后台扫描工具下载、安装、使用教程 御剑后台扫描珍藏版是T00LS大牛的作品,方便…