Activity加载模式

配置Activity时可指定Android:launchMode属性,该属性用于配置该Activity的加载模式,该属性支持4个属性值:

a) standard

每次通过这种模式来启动目标Activity时,Android总会为目标Activity创建一个新的实例,并将该Activity添加到当前Task栈中——这种模式不会启动新的Task,新的Activity将被添加到原有的Task中

b) singleTop

当将要启动的Activity已经位于Task栈顶时,系统不会重新创建目标Activity实例,而是直接复用已有的Activity实例。其他与standard模式基本相似

c) singleTask

采用这种加载模式的Activity在同一个Task内只有一个实例,当系统采用singleTask模式启动目标Activity时,可分为如下三种情况:

i. 如果将要启动的Activity不存在,系统将会创建目标Activity的实例,并将它加入Task栈顶

ii. 如果将要启动的Activity已经位于Task栈顶,此时与singleTop模式的行为相同

iii. 如果将要启动的Activity已经存在但是没有位于Task栈顶,系统将会把位于该Activity上面的所有Activity移除Task栈,从而使得目标Activity转入栈顶

d) singleInstance

这种加载模式下,系统保证无论从哪个Task中启动目标Activity,只会创建一个目标Activity实例,并会使用一个全新的Task栈来装载该Activity实例。当系统采用singleInstance模式启动目标Activity时,可以分为下面两种情况:

i.如果将要启动的目标Activity不存在,系统会先创建一个全新的Task、再创建目标Activity实例,并会将它加入新的Task栈顶

ii.如果将要启动的目标Activity已经存在,无论它位于哪个应用程序,无论它位于哪个Task中,系统将会把Activity所在的Task转到前台,从而使该Activity显示出来

注意:采用singleInstance模式加载Activity总是位于Task栈顶,采用singleInstance模式加载Activity所在Task只包含该Activity

 

为什么要指定加载模式?加载模式的作用?

在回答这个问题前,先介绍Android对Activity的管理:Android采用Task来管理多个Activity,当我们启动一个应用时,Android就会为之创建一个Task,然后启动这个应用入口Activity。Android并没有为Task提供API,只能调用Activity的getTaskId()方法来获取它所在的Task的ID。其实我们可以把Task理解成Activity栈,Task以栈的形式来管理Activity:先启动的Activity被放在Task栈底,后启动的Activity被放在Task栈顶

Activity的加载模式,就负责管理实例化、加载Activity的方式、并可以控制Activity与Task之间的加载关系

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React Native 是一种流行的跨平台开发框架,它允许我们使用JavaScript编写移动应用程序。 在React Native中,我们可以通过创建自定义的 Activity加载RN(React Native)应用程序。 Activity 是Android开发中的一个重要概念,它代表一个用户界面的窗口。 在React Native中,我们可以使用现有的 BaseActivity 类来加载RN应用程序。 首先,我们需要在 Java 代码中创建一个继承 BaseActivity 的自定义 Activity 类。 在这个类中,我们需要执行几个步骤来加载RN应用程序。 首先,我们需要创建一个 ReactInstanceManager 对象并对其进行一些配置,例如设置JS主机、设置调试模式等。 然后,我们需要使用这个 ReactInstanceManager 对象创建一个 ReactRootView 对象。 接下来,我们可以调用 ReactRootView 的 startReactApplication() 方法来加载我们的RN应用程序。 这个方法需要两个参数:一个是我们的 RN 应用程序的模块名,另一个是传递给 RN 应用程序的一些初始属性。 最后,我们需要使用 setContentView() 方法将 ReactRootView 对象设置为 Activity 的内容视图,以便它可以显示在屏幕上。 需要注意的是,加载 RN 应用程序可能需要一些时间,因此我们可能需要显示一个加载指示器或者启动一个异步任务来加载 RN 应用程序。 这样,当 RN 应用程序加载完成后,我们就可以将其显示在 Activity 中了。 总结一下,通过创建一个继承 BaseActivity 的自定义 Activity 类,并在其中执行必要的步骤来配置和加载 RN 应用程序,我们可以将 RN 应用程序加载到 Android Activity 中。这样,我们就可以在 Android 平台上使用 React Native 来构建跨平台的移动应用程序了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值