Activity启动模式

1、LaunchMode

  • standard(标准模式)

Activity的默认启动模式,每次startActivity都会重新创建一个Activity实例,不管之前是否已经存在该Activity实例。被启动的Activity实例会进入到启动它的Activity所属的任务栈中。

  • singleTop(栈顶复用模式)

如果待启动Activity在当前任务栈存在实例,并且实例位于栈顶,则启动Activity不会重新创建实例,而是直接复用之前的实例。同时,Activity的onNewIntent()方法会被调用,而生命周期函数onCreate()、onStart()不会被调用。

  • singleTask(栈中复用模式)

如果待启动Activity在其所属任务栈(TaskAffinity,默认为应用package name)中存在实例,则复用该实例。与singleTop类似,Activity的onNewIntent()方法也会被调用,而生命周期函数onCreate()、onStart()不会被调用。同时,singleTask自带clearTop效果,即任务栈中位于其上方的其他Activity会直接出栈,销毁。

  • singleInstance(单例模式)

强化版singleTask模式。首次启动时,单独为其创建一个任务栈,创建该Activity实例,压入栈中。之后,所有启动该Activity的请求都会复用该实例。
2、Flags

  • FLAG_ACTIVITY_SINGLE_TOP

对应singleTop启动模式

  • FLAG_ACTIVITY_NEW_TASK

对应singleTask启动模式

  • FLAG_ACTIVITY_CLEAR_TOP

启动Activity时,使用该标志会将栈中该Activity实例上方包括该实例在内的所有实例均做出栈操作,然后重新创建该Activity实例入栈。
3、IntentFilter

  • IntentFilter需要同时匹配action、category、data信息,才算匹配成功。
  • 一个Activity可以有多个IntentFilter,匹配其中一个即算匹配成功。
  • setData()和setType()方法互斥,会相互清除对方设置。如需同时设置,可以使用setDataAndType()。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值