Activity的onNewIntent()方法什么时候会执行

ActivityonNewIntent()方法会在以下几种情况下被调用:

  1. 启动模式为singleTop:当你的Activity已经位于任务栈的顶部,并且用户尝试通过Intent再次启动这个Activity时(无论是通过startActivity()还是startActivityForResult()),onNewIntent()方法会被调用,而不是创建这个Activity的一个新实例。Intent对象(即用于启动这个ActivityIntent)会作为参数传递给onNewIntent()方法。

  2. 通过FLAG_ACTIVITY_SINGLE_TOP标志启动Activity时:即使Activity的启动模式不是singleTop,如果在启动ActivityIntent中设置了FLAG_ACTIVITY_SINGLE_TOP标志,并且这个Activity已经位于任务栈的顶部,那么同样会调用onNewIntent()方法,而不是创建新的实例。

  3. 从通知(Notification)启动Activity时:如果你的应用从通知栏中的通知启动了一个Activity,并且这个Activity已经存在于任务栈中(无论是位于顶部还是其他位置),根据Activity的启动模式和Intent中设置的标志,onNewIntent()方法可能会被调用。特别是当Activity的启动模式为singleTop或者Intent中设置了FLAG_ACTIVITY_SINGLE_TOP时。

  4. 通过FLAG_ACTIVITY_REORDER_TO_FRONT标志启动Activity时:虽然这个标志不直接触发onNewIntent()的调用,但它在将已存在的Activity带到前台时,如果配合singleTop模式或FLAG_ACTIVITY_SINGLE_TOP使用,可能会间接影响onNewIntent()的调用。不过,通常FLAG_ACTIVITY_REORDER_TO_FRONT用于将现有的Activity带到前台而不调用onCreate()onStart()onResume()(如果它已经在前台),并且不一定会导致onNewIntent()的调用。

需要注意的是,onNewIntent()方法只在Activity已经存在(即已经通过onCreate()方法初始化)且处于可接收新Intent的状态(如位于任务栈的顶部或符合singleTop的条件)时才会被调用。如果Activity不存在于任务栈中,或者Intent的匹配导致创建了一个新的Activity实例(例如,因为启动模式不是singleTop且没有设置FLAG_ACTIVITY_SINGLE_TOP),则onNewIntent()不会被调用,而是会正常通过onCreate()onStart()onResume()等生命周期方法初始化Activity

PS: 核心一点 就是已经Activity已经存在了,然后还有被复用的时候 就会走。NewIntent

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值