Android启动之生命周期流程

这篇具有很好参考价值的文章主要介绍了Android启动之生命周期流程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、简述

二、启动流程说明(一)

三、启动流程说明(二)

四、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启动生命周期流程的简要介绍,难免存在不足之处。如有任何错误或改进意见,请不吝指正和建议。文章来源地址https://www.toymoban.com/news/detail-494170.html

到了这里,关于Android启动之生命周期流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 软件生命周期及流程

    软件生命周期及流程 软件生命周期:是软件开始研制到最终被废弃不用所经历的各个阶段 瀑布型生命周期模型:他们是一个自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落,具有顺序性和依赖性。每个阶段规定文档并需进行评审。 瀑布型特点: 自上而下 、由顺

    2023年04月21日
    浏览(35)
  • 微服务流程引擎:简单又灵活,实现流程全生命周期管理!

    伴随着日益激烈的市场竞争,传统的办公操作已经无法满足发展需要了。如果采用微服务流程引擎加油助力,就可以帮助企业更好地管理数据资源,高效做好各种表单制作,实现高效率办公。流辰信息以市场为导向,用心钻研低代码技术平台产品,帮助不同行业的客户朋友做

    2024年02月12日
    浏览(51)
  • Bean 作用域、生命周期和Spring执行流程

    假设现在有⼀个公共的 Bean,提供给 A ⽤户和 B ⽤户使⽤,然⽽在使⽤的途中 A ⽤户却“悄悄”地修改了公共 Bean 的数据,导致 B ⽤户在使⽤时发⽣了预期之外的逻辑错误。 我们可以看到,B 用户在使用这个Bean对象时,得到的Dog是被A 用户修改过的,这无疑会给 B 用户带来很

    2024年02月12日
    浏览(47)
  • 【Spring专题】Bean的生命周期流程图

    我向来不主张【通过源码】理解业务,因为每个人的能力有限,甚至可能会因为阅读错误导致出现理解上的偏差,所以我决定,还是先帮大家【开天眼】,先整体看看流程图,好知道,Spring在写源码的过程中到底干了啥事情。 对于【一、之前推测的简单流程图】大家可以不看

    2024年02月13日
    浏览(43)
  • Docker 容器生命周期:创建、启动、暂停与停止

    🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐 🌊 《100天精通Golang(基础入门篇)》学会Golang语言

    2024年02月14日
    浏览(39)
  • Android Jetpack中Lifecycle使用生命周期感知型组件处理生命周期

    在使用Kotlin实现Android Jetpack中Lifecycle使用生命周期感知型组件处理生命周期的功能时,你需要以下步骤: 首先,在app的build.gradle文件中添加Lifecycle相关库的依赖项: 然后,在你的Activity或Fragment中创建一个LifecycleObserver对象,并使用@OnLifecycleEvent注解来实现相应的生命周期方法

    2024年01月21日
    浏览(49)
  • 【框架源码】Spring源码解析之Bean生命周期流程

    观看本文前,我们先思考一个问题,什么是Spring的bean的生命周期?这也是我们在面试的时候,面试官常问的一个问题。 在没有Spring之前,我们创建对象的时候,采用new的方式,当对象不在被使用的时候,由Java的垃圾回收机制回收。 而 Spring 中的对象是 bean,bean 和普通的 J

    2024年02月09日
    浏览(45)
  • Android生命周期:理解与应用

    摘要:Android生命周期是开发Android应用程序时至关重要的概念。本文将介绍Android生命周期的概念、生命周期方法的执行顺序以及如何在应用程序中正确地管理生命周期。我们还将讨论生命周期对于应用程序的重要性,并提供一些实际应用中的最佳实践和注意事项。 引言(10

    2024年02月05日
    浏览(38)
  • K8s之Pod生命周期、启动停止钩子

    Pod生命周期整个过程 如下图: 1、在启动任何容器之前,前创建 pause 容器,它初始化Pod的环境并为后续加入的容器提供共享名称空间。 2、初始化容器(initContainers):一个Pod可以定义任意个初始化容器,如上图就定义了两个初始化容器,初始化会按照YAML清单中顺序执行,当最

    2024年02月05日
    浏览(57)
  • 【鸿蒙软件开发】UIAbility组件概况、生命周期与启动模式

    UIAbility组件是一种包含UI界面的应用组件,主要用于和用户交互。 UIAbility组件是系统调度的基本单元,为应用提供绘制界面的窗口;一个UIAbility组件中可以通过多个页面来实现一个功能模块。每一个UIAbility组件实例,都对应于一个最近任务列表中的任务。 UIAbility组件是一种包

    2024年02月05日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包