App启动原理

App启动原理,第1张

startActivity---->

startActivityForActivityResult----->

Insrumention(execStartActivity)--->

ActivityManagerProxy(startActivity)--->

Binder通信---->通知ActivityManagerService

A:检查Activity的合法性,是否在AndroidManifestxml清单文件中注册。

B:如果合法,会暂存Activity的信息,通过ActivityStack获取栈顶的Activity,并通知Launcher应用,pause 该Activity 。

C:检查Activity所在的进程是否存在。

A:会调用Processstart() ,通过Socket通信的方式,通知zygote进程,fork一个新进程

B:载入ActivityThread ,会调用main()方法初始化,在main()方法内部会调用 threadattach(false, startSeq)--->actachApplication()

B1:判断Application是否存在,如果存在,直接绑定当前的进程,

如果不存在,会调用LoadApkmakeApplication创建一个新的Application,并绑定当前进程。

handleLaunchActivity--->performLaunchActivity---->Instrumentation--->newActivity---->callActivityCreate---->callActivityStart--->callActivityResume----->UI渲染完成。

不用写代码。直接在cmd窗口上输入 adb shell后,再输入dumpsys activity activities,可以看到所有的activity以及相关栈状态。 查看原帖>> 采纳哦

在Android中每个界面都是一个Activity,切换界面 *** 作其实是多个不同Activity之间的实例化 *** 作。在Android中Activity的启动模式决定了Activity的启动运行方式。

Android总Activity的启动模式分为四种:

Activity启动模式设置:

<activity android:name="MainActivity" android:launchMode="standard" />

Activity的四种启动模式:

1 standard

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

2 singleTop

如果在任务的栈顶正好存在该Activity的实例, 就重用该实例,否者就会创建新的实例并放入栈顶(即使栈中已经存在该Activity实例,只要不在栈顶,都会创建实例)。

3 singleTask

如果在栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent())。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果栈中不存在该实例,将会创建新的实例放入栈中。

4 singleInstance

在一个新栈中创建该Activity实例,并让多个应用共享改栈中的该Activity实例。一旦改模式的Activity的实例存在于某个栈中,任何应用再激活改Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,不管谁激活该Activity都会进入同一个应用中。

其中standard是系统默认的启动模式。

1、MainActivity启动时创建一个静态的集合

2、每次开启一个activity就向集合插入activity的引用

3、清除的时候,只需遍历这个集合,将你不需要的activity finish掉就行了。

package netoschinaapp;

import javautilStack;

import androidappActivity;

import androidappActivityManager;

import androidcontentContext;

/

应用程序Activity管理类:用于Activity管理和应用程序退出

@author liux (>

以上就是关于App启动原理全部的内容,包括:App启动原理、如何判断栈里是否存在一个activity、如何获取activity的lunchmode等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9498214.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存