Android Activity组件的启动过程】的更多相关文章

0.总图 1.总图中的第一步,Laucher主线程向ActivityManagerService进程发出START_ACTIVITY_TRANSACTION 如图:第一步 ~/Android/frameworks/base/core/java/android/app ----ActivityManagerNative.java class ActivityManagerProxy implements IActivityManager { public int startActivity(IAp…
根Activity启动过程 Launcher启动MainActivity的过程主要分为6个步骤: 一.Launcher向ActivityManagerService发送一个启动MainActivity的进程间通信请求: 二.ActivityManagerService首先将MainActivity的信息保存下来,再向Launcher组件发送一个进入中止状态的进程间通信请求: 三.Launcher进入中止状态后,向ActivityManagerService发送一个已经进入中止状态的进程间通信请求…
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8577789 在Android系统中,Activity组件在启动之后,并且在它的窗口显示出来之前,可以显示一个启动窗口.这个启动窗口可以看作是 Activity组件的预览窗口,是由WindowManagerService服务统一管理的,即由WindowManagerService服务负责 启动和结束.在本文中,我们就详细分析WindowManag…
文章转载至CSDN社区罗升阳的安卓之旅,原文地址: http://blog.csdn.net/luoshengyang/article/details/6747696 Android 应用程序框架层创建的应用程序进程具有两个特点,一是进程的入口函数是ActivityThread.main,二是进程天然支持Binder进程间通信 机制:这两个特点都是在进程的初始化过程中实现的,本文将详细分析Android应用程序进程创建过程中是如何实现这两个特点的. Android应用程序框架层创建的应用程序进程…
前言 在前篇中我们讲到了Android应用程序进程启动过程,这一篇我们来讲遗留的知识点:在应用程序进程创建过程中会启动Binder线程池以及在应用程序进程启动后会创建消息循环. 1.Binder线程池启动过程 我们首先来看RuntimeInit类的zygoteInit函数,如下所示 frameworks/base/core/java/com/android/internal/os/RuntimeInit.java 注释1处会在新创建的应用程序进程中创建Binder线程池 2.消息循环创建过程 f…
tomcat 8 源码分析 ,本文主要讲解tomcat拥有哪些组件,容器,又是如何启动的 推荐访问我的个人网站,排版更好看呦: https://chenmingyu.top/tomcat-source-code/ tomcat 简介 ​ Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,Tomcat服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器. 整体架构 首先我们先看一张图 看上图总结一…
在此前我讲过Android系统的启动流程,系统启动后,我们就比较关心应用程序是如何启动的,这一篇我们来一起学习Android7.0 应用程序进程启动过程,需要注意的是“应用程序进程启动过程”,而不是应用程序启动过程.关于应用程序启动过程,我会在后续系列的文章中讲到. 1.应用程序进程概述 要想启动一个应用程序,首先要保证这个应用程序所需要的应用程序进程已经被启动.ActivityManagerService在启动应用程序时会检查这个应用程序需要的应用程序进程是否存在,不存在就会请求Zygote进…
task和back stack(任务和回退栈) 任务启动,task被加入到回退栈的栈顶,返回的时候回退栈的栈顶任务会被弹出,并被销毁,栈中的前一任务恢复运行,当activity销毁是,系统不会保留activity的状态. 当activity被paused 或者stopped时activity的状态可以保存, Activity四种启动模式 在注册文件Activity标签中使用launchMode添加模式,默认模式为standrad 1.standrad 调用新的 activity activity…
1.standard <activity android:name=".MainActivity" android:launchMode="standard" />这种模式下载任务栈里,每次启动这个acti都会在任务里添加这个acti,不论这个任务栈里之前有没有这个acti startActivity(new Intent(this,MainActivity.class)); 2.singleTop <activity android:name=&…
Activity启动模式 能够依据实际的需求为Activity设置相应的启动模式,从而能够避免创建大量反复的Activity等问题 Activity有四种载入模式 1.standard(默认启动模式,每次激活Activity都会创建Activity实例.并放入Activity栈中) 2.singleTop(能够有多个实例,可是不同意此Activity的多个实例叠加. 即,假设此Activity有实例在栈顶的时候.启动这个Activity,不会创建新的实例而会调用其OnNewIntent方法,假设…
转自:http://www.cdtarena.com/gpx/201308/9607.html 程序里调用了onSizeChanged方法进行了一些设置,不知道onSizeChanged是在什么时候启动的,所以研究了一下View的启动流程 代码如下: [java] view plaincopyprint? public class TestView extends View { public TestView(Context context) { super(context); Log.d("m…
代码例如以下: private MediaPlayer mMediaPlayer; mMediaPlayer = new MediaPlayer(); mMediaPlayer = MediaPlayer.create(this, R.raw.happy); mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mMediaPlayer.setLooping(true); mMediaPlayer.start(); ok,问题解决…
1.儿子Activity在启动过程中的流程组件 在Android Activity启动过程http://blog.csdn.net/jltxgcy/article/details/35984557一文中,我们已经具体分析了Activity的启动过程,对于子Activity组件在进程内的启动过程.我们仅仅分析它们之间的不同. 主要是2处.1是不须要创建新的任务栈.2是不须要创建新进程和子线程.表如今上一篇文章的总图中.就是没有第4步.并且第5步指向的Laucher子线程. 第1点,体如今例如以下代…
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6703247 上文介绍了Android应用程序的启动过程,即应用程序默认Activity的启动过程,一般来说,这种默认 Activity是在新的进程和任务中启动的:本文将继续分析在应用程序内部启动非默认Activity的过程的源代码,这种非默认Activity一般 是在原来的进程和任务中启动的. 这里,我们像上一篇文章Android应用程序启动过…
前言 Content Provider做为四大组件之一,通常情况下并没有其他的组件使用频繁,但这不能作为我们不去深入学习它的理由.关于Content Provider一篇文章是写不完的,这一篇文章先来介绍它的启动过程. 1.query方法到AMS的调用过程 在Android IPC机制(四)用ContentProvider进行进程间通信这篇文章我举了一个Content Provider使用的例子,在Activity中我是使用如下代码调用Content Provider的: public clas…
前言 此前我用较长的篇幅来介绍Android应用程序的启动过程(根Activity的启动过程),这一篇我们接着来分析Service的启动过程.建议阅读此篇文章前,请先阅读Android深入四大组件(一)应用程序启动过程(前篇)和Android深入四大组件(一)应用程序启动过程(后篇)这两篇文章. 1.ContextImpl到ActivityManageService的调用过程 要启动Service,我们会调用startService方法,它的实现在ContextWrapper中,代码如下所示.f…
Android 系统启动过程 从系统层看: linux 系统层 Android系统服务层 Zygote 从开机启动到Home Launcher: 启动bootloader (小程序:初始化硬件) 加载系统内核 (先进入实模式代码在进入保护模式代码) 启动init进程(用户级进程 ,进程号为1) 启动Zygote进程(初始化Dalvik VM等) 启动Runtime进程 启动本地服务(system service) 启动 HomeLauncher 详细解析 Android系统完整的启动过程,从系统…
It’s right time to learn Android’s Framework ! 前言 学习目标 写作方式 主要对象功能介绍 主要流程介绍 zygote是什么有什么作用 SystemServer是什么有什么作用它与zygote的关系是什么 ActivityManagerService是什么什么时候初始化的有什么作用 Launcher是什么什么时候启动的 Instrumentation是什么和ActivityThread是什么关系 如何理解AMS和ActivityThread之间的Bi…
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6768304 在Android系统中,所有的应用程序进程以及系统服务进程SystemServer都是由Zygote进程孕育 (fork)出来的,这也许就是为什么要把它称为Zygote(受精卵)的原因吧.由于Zygote进程在Android系统中有着如此重要的地位,本文 将详细分析它的启动过程. 在前面一篇文章Android应用程序进程启动过程的源…
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6689748 前文简要介绍了Android应用程序的Activity的启动过程.在Android系统中,应用程序是由Activity组成的,因此,应用程 序的启动过程实际上就是应用程序中的默认Activity的启动过程,本文将详细分析应用程序框架层的源代码,了解Android应用程序的启动过程. 在上一篇文章Android应用程序的Activit…
本文转自:http://blog.csdn.net/luoshengyang/article/details/6689748 前文简要介绍了Android应用程序的Activity的启动过程.在Android系统中,应用程序是由Activity组成的,因此,应用程序的启动过程实际上就是应用程序中的默认Activity的启动过程,本文将详细分析应用程序框架层的源代码,了解Android应用程序的启动过程. 在上一篇文章Android应用程序的Activity启动过程简要介绍和学习计划中,我们举例子…
原文:Android Activity 的四种启动模式 lunchMode 和 Intent.setFlags();singleTask的两种启动方式. Android Activity 的四种启动模式 lunchMode 和 Intent.setFlags(); 一.Android Activity 四种启动模式 lunchMode 在Manifest 配置文件中的属性如下: (1) android:launchMode="standard" (2)android:launchMod…
作为java 开发者,从开始学习java 便知道tomcat 这个容器了,但是一直却没有怎么研究过它的内部结构,以前对tomcat的认识也仅仅局限在那几个常用的目录放什么东西,那几个常用的配置文件应该写说明内容,却很少研究其内部的组件以及启动过程,另外,去网上找相关的资料博客,也发现不是很多很全面,所以这几天特意了解了下tomcat 的内部工作的原理,简单总结了tomcat比较核心的一些组件,仅供学习交流,今天这篇博客主要是研究下tomcat 的大体组件有什么以及它们的启动过程,后面会继续总结t…
一.App启动方式 1,冷启动 冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用. 冷启动的特点:因为系统会重新创建一个新的进程分配给它,所以会创建和初始化Application,在创建和初始化它的Launch Activity(onCreate onMesure onLayout,ondraw),最后展示在界面上 2.热启动热启动:当启动应用时,后台存在该应用的进程(back键,home键,应用退出,但是没有销毁),从已有的进程中启动 热启动的特点:从已有…
在Android系统中,应用程序是由Activity组成的,因此,应用程序的启动过程实际上就是应用程序中的默认Activity的启动过程,本文将详细分析应用程序框架层的源代码,了解Android应用程序的启动过程. 启动Android应用程序中的Activity的两种情景:其中,在手机屏幕中点击应用程序图标的情景就会引发Android应用程序中的默认Activity的启动,从而把应用程序启动起来.这种启动方式的特点是会启动一个新的进程来加载相应的Activity. 这里,我们以这个例子为例来说明…
Activity组件的UI实现需要与WindowManagerService服务和SurfaceFlinger服务进行交互 1. Activity组件在启动完成后,会通过一个类型为Session的Binder对象来请求WindowManagerService为它创建一个类型为WindowState的对象,用来描述它的窗口状态 2. Android应用程序会通过一个类型为Client的Binder对象来请求SurfaceFlinger服务为它创建一个类型为Layer的对象,用来描述它的窗口数据.…
--摘自<Android进阶解密> 第一步:query方法到AMS的调用过程 1)ApplicationContentResolver是ContextImpl中的静态内部类,继承自ContentResolver,它在ContextImpl的构造方法中被创建,这说明我们调用ContentResolver的insert.query.update等方法时就会启动Content Provider 2)IContentProvider是ContentProvider在本地的代理,具体的实现为Conten…
前言 在几个月前我写了Android深入四大组件(一)应用程序启动过程(前篇)和Android深入四大组件(一)应用程序启动过程(后篇)这两篇文章,它们都是基于Android 7.0,当我开始阅读Android 8.0源码时发现应用程序(根Activity)启动过程照Android 7.0有了一些变化,因此又写下了本篇文章,本篇文章照此前的文章不仅流程发生变化,而且增加了一些分析,算是升级版本.由于篇幅较长,Android8.0 根Activity启动过程仍旧分为前篇和后篇来进行讲解. 1. A…
前言 在几个月前我写了Android深入四大组件(一)应用程序启动过程(前篇)和Android深入四大组件(一)应用程序启动过程(后篇)这两篇文章,它们都是基于Android 7.0,当我开始阅读Android 8.0源码时发现应用程序(根Activity)启动过程照Android 7.0有了一些变化,因此又写下了本篇文章,本篇文章照此前的文章不仅流程发生变化,而且增加了一些分析,算是升级版本.由于篇幅较长,Android8.0 根Activity启动过程仍旧分为前篇和后篇来进行讲解. 1.概述…
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6963418 通过前面的学习,我们知道在Android系统中,Content Provider可以为不同的应用程序访问相同的数据提供统一的入口.Content Provider一般是运行在独立的进程中的,每一个Content Provider在系统中只有一个实例存在,其它应用程序首先要找到这个实例,然后才能访问它的数据.那么,系统中的Conten…