Activity 创建模式

讲到Intent过滤机制时,data属性里有一个flag属性,是有关Activity的创建模式的。今天看到了Activity的创建模式,就来简要写了下。

在XML中设置Activity的创建模式

要用到android:launchMode属性

android:launchMode="standard"    默认属性   窗口类可以被实例化多次,每个实例可以属于不同的任务,一个任务也可以有同一个窗口的多个实例。每次都会重新创建窗口实例。

android:launchMode="singleTop"  如果栈顶窗口实例为将要创建的窗口实例,则不用再次创建窗口实例,直接使用栈顶窗口实例,调用onNewIntent方法。如果栈顶窗口实例不是将要创建的窗口实例,则需要新创建实例。

android:launchMode="singleTask"   在同一个任务中,如果栈顶窗口实例为将要创建的窗口实例,则不用再次创建窗口实例,直接使用栈顶窗口实例,调用onNewIntent方法。如果栈顶窗口实例不是将要创建的窗口实例,如果该窗口不存在,则新创建,如果该窗口存在回退栈中,将该窗口上的窗口对象全部出栈,会调用onNewIntent方法。  在不同任务中,如果调用另外一个应用程序中的singleTask窗口,如果窗口不存在,新建任务,并将新建的窗口压入栈中。这里涉及到两个任务的切换。如果窗口存在,则直接切换到该窗口,该窗口上的窗口对象全部释放。

android:launchMode="singleInstance"  和singleTask相似,但是其任务的回退栈中只有一个窗口对象


在java中设置Activity的创建模式

这里要用到的是Intent过滤机制的flag属性,通过Intent.setFlags(Intent.标志)方法来设置

首先要介绍Intent的几种标志,常常需要这几种标志联合使用。

Intent.FLAG_ACTIVITY_SINGLE_TOP             和singleTop一样

Intent.FLAG_ACTIVITY_CLEAR_TOP              释放要显示窗口之上的全部窗口,如果要显示的窗口为standard,只是用Intent.FLAG_ACTIVITY_CLEAR_TOP,释放要显示窗口和它上面的全部窗口,再重新创建显示窗口。如果要显示的窗口为standard之外的模式,或者和Intent.FLAG_ACTIVITY_SINGLE_TOP  联合使用,则相当于同一任务下的singleTask。

Intent.FLAG_ACTIVITY_NEW_TASK    相当于不同任务的singleTask

Intent.FLAG_ACTIVITY_CLEAR_TASK    释放当前回退栈的所有窗口对象,并新创建显示窗口对象,必须要和Intent.FLAG_ACTIVITY_NEW_TASK一起使用才可以

Intent.FLAG_ACTIVITY_REORDER_TO_FRONT    只要当前回退栈中存在要显示的窗口对象,就不会重新创建窗口对象,并将要显示窗口对象提到栈顶,其他的窗口对象不出栈。会调用要显示窗口的onNewIntent方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值