仗劳勤学网

activity启动过程(activity启动app)

本篇目录:

怎么启动一个带参数的activity

前面realStartActivityLocked方法中通过addCallback,传入参数LaunchActivityItem。

调用 startActivity 或 startActivityForResult 来启动Activity。那么启动的Activity有两种情况:第一种是启动同进程内的Activity; 第二种是启动不同进程的根Activity,比如在桌面点击启动App,就是启动不同进程的Activity。

activity启动过程(activity启动app)-图1

要启动一个新的Activity,我们可以通过调用Context中的startActivity来启动。

将a标签,绑定onclick事件,即可实现需要的功能。具体HTML代码:1 538路 代码解释:onclick是对a标签进行点击事件绑定。chaXunCheCi是原来的函数。this.innerHTML得到链接文字。

点击桌面图标后,Launcher进程访问AMS进程请求启动目标Activity,采用的跨进程方式是AIDL。2 AMS进程访问Zygote进程请求启动一个新的进程。采用的跨进程方式是Socket。3 Zygote进程通过调用fork函数创建一个App进程。

//启动一个带有选择联系人返回结果的activity startActivityForResult(intent, PICK_CONTACT_REQUEST);这里的PICK_CONTACT_REQUEST为自定义的int型请求反馈结果代码。

activity启动过程(activity启动app)-图2

Activity的启动流程

那么启动的Activity有两种情况:第一种是启动同进程内的Activity; 第二种是启动不同进程的根Activity,比如在桌面点击启动App,就是启动不同进程的Activity。

startActivity 的大概流程就是由应用进程 IPC 调用到 AMS,AMS 处理完这些工作后再 IPC 回到应用进程,创建 Activity 的实例,回调 Activity 的生命周期。

通过调用ActivityManager.getService()来获取AMS。

ATM启动最终调用的是ActivityTaskManagerService.Lifecycle.onStart()来启动ATM服务的 源码:ActivityTaskManagerService.java#Lifecycle.class 将ActivityTaskManagerInternal添加到本地服务的全局注册表中。

activity启动过程(activity启动app)-图3

普通Activity的启动就是通过调用startActivity方法启动一个新的Activity,总体流程如下图:其中涉及到了两个进程,一个是App进程和AMS进程。整体的步骤是:启动者Activity向Instrumentation请求启动目标的Activity。

Activity的启动流程整体如下:Activity启动阶段 (一)涉及到的概念 进程:Android系统为每个APP分配至少一个进程 IPC:跨进程通信,Android中采用Binder机制。

如何启动一个activity?涉及到哪些方法

要启动一个新的Activity,我们可以通过调用Context中的startActivity来启动。

其中涉及到四个进程分别是:Launcher进程、AMS进程、App进程、Zygote进程。点击桌面图标后,Launcher进程访问AMS进程请求启动目标Activity,采用的跨进程方式是AIDL。2 AMS进程访问Zygote进程请求启动一个新的进程。

应用场景:在通知栏点击收到的通知,然后需要启动一个Activity,这个Activity就可以用singleTop,否则每次点击都会新建一个Activity。某个场景下连续快速点击,启动了两个Activity。

Android中的Activity详解--启动模式与任务栈

如果是同一个App中启动某个设置了此模式的Activity的话,如果栈中已经存在该Activity的实例,那么就会将该Activity上面的Activity清空,并将此实例放在栈顶。

MainActivity 采用 singleTask 模式,SecondActivity采用 standard 模式 这是一种加强的 singleTask 模式,它除了具有 singleTask 模式的所有特性外,还加强了一点,那就是具有此模式的Activity只能单独的位于一个任务栈中。

自定义activity列表,新打开activity则加入栈中,关闭则移除栈; 需要退出多个activity时,则循环从栈中移除activity实例,并调用finish。

第一种,标准模式,想想就知道是平常的模式,这里的标准意思是每生成一个activity的实例,就当一个实例的放在栈里。第二种,singleTop,在于那个top。

以singleInstance模式启动的Activity具有全局唯一性,即整个系统中只会存在一个这样的实例,如果在启动这样的Activiyt时,已经存在了一个实例,那么会把它所在的任务调度到前台,重用这个实例。

FLAG_ACTIVITY_NEW_TASK标签必须配合taskAffinity属性使用,如果不设置taskAffinity属性值,将不会生成新task。当从启动模式为singleInstance的Acitivity中启动新的Acitivity时,新的Activity自带FLAG_ACTIVITY_NEW_TASK标签。

Activity的几种启动模式

standard模式:是Activity默认的启动模式,在standard模式下,每当启动一个新的Activity,它就会进入任务栈,并处于栈顶。

standard:该启动模式为Android默认启动模式,每当启动一个activity就会在任务栈中创建一个 activity,这种模式是默认的,非常浪费空间,但是可以有效的保存之前启动的activity。用于保证之前页面不丢失的时候使用。

Activity的四种启动模式: standard 模式启动模式,每次激活Activity时都会创建Activity,并放入任务栈中。

启动模式(只能根据压栈和出栈操作更改Activity的顺序,所以是启动模式是以哪种姿势入栈)通过在AndroidManifest文件中的属性andorid:launchMode来设置或者通过Intent的flag来设置 standard(常规姿势入栈)默认模式。

singleTop 与 singleTask 是 Activity 最常用的两种启动模式。本文主要讲解两者之间的区别与使用场景。

到此,以上就是小编对于activity启动app的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位老师在评论区讨论,给我留言。

分享:
扫描分享到社交APP
上一篇
下一篇