Activity的加载模式解读

Android是用launchMode属性来定义activity的加载模式的,如在AndroidManifest里面写:

<activity android:name=".Activity2" android:launchMode="singleInstance">
加载模式一共四种,下面分别介绍:

standard:就是intent将发送给新的实例,所以每次跳转都会生成新的Activity。

singleTop:也是发送给新的实例,但不同于standard的一点是,请求的Activity正好位于栈顶时,不会构造新的实例,这时会执行onNewIntent()方法,所以生命周期变化为:onPause()-->onNewIntent()-->onResume()。可以这样记:top single---如果在栈顶,就使用这一个。

singleTask:和后面的singleInstance都只创建一个实例,当intent到来,系统会检查栈里面是否已经有该Activity的实例,如果有直接将intent发送给它,并使此Activity实例之上的其他Activity实例统统出栈,没有的话才会新建。可以这样记:task single---如果栈里面有,就使用这一个。
需要说明的是:如果栈里面已经有Activity的实例了,那么当intent到来时,若此时在栈顶,生命周期变化为:onPause()-->onNewIntent()-->onResume(),若不在栈顶,那么其他activity出栈,该activity的生命周期变化为:onNewIntent()-->onReStart()-->onStart()-->onResume()。
Android中有一个属性android:taskAffinity,是用来给Application或Activity设置“任务共用性”的,默认是包名。如果为一个singleTask模式的Activity设置了该属性,如:android:taskAffinity="com.example.demo.aa"那么这个Activity跟该应用的其他Activity就不在同一个task(栈)了,可以使用this.getTaskId()打印出来看一下就清楚了,如果该activity正常启动一个activity,那么启动的activity跟该activity在同一个栈。


singleInstance:将Activity放入一个栈中,并且这个栈中有且只有这一个Activity(虽然跟其他activity不同栈,但是在同一个线程),不同应用的intent都由这个Activity接收和展示,实际就是不同应用共享同一个Activity,其实这种情况该Activity就相当于一个独立的应用了,不过这个应用仅有这一个Activity而已。当intent到来时,如果栈里有activity,那么该activity的生命周期变化为:onNewIntent()-->onReStart()-->onStart()-->onResume(),如果没有,则创建。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
React Native 是一种流行的跨平台开发框架,它允许我们使用JavaScript编写移动应用程序。 在React Native中,我们可以通过创建自定义的 ActivityRN(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 来构建跨平台的移动应用程序了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值