Activity的onNewIntent

本文详细介绍了如何通过设置Activity的启动模式为singleTask并结合onNewIntent(Intent intent)方法,实现同一Activity实例的复用及不同启动来源的区分。具体包括Activity的生命周期回调函数流程以及如何正确使用setIntent(intent)来更新Intent。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个应用的Activity可供多种方式调用启动,当多个调用希望只有一个Activity的实例存在,并且还要区分是被谁启动或是已经启动被谁拉到前台来的,这就需要Activity的onNewIntent(Intent intent)方法了。只要在Activity中加入自己的onNewIntent(intent)的实现加上Manifest中对Activity设置lanuchMode=“singleTask”,然后在不同调用的地方给intent设置不同的值就可以了。

       Activity第一次启动的时候执行onCreate()-->onStart()-->onResume()等生命周期函数,不会执行到onNewIntent(). 而后面如果再有想启动Activity的时候,那就是执行onNewIntent()-->onResart()-->onStart()-->onResume().  如果android系统由于内存不足把已存在Activity释放掉了,那么再次调用的时候会重新启动Activity即执行onCreate()-->onStart()-->onResume()等。当调用到onNewIntent(intent)的时候,需要在onNewIntent() 中使用setIntent(intent)赋值给Activity的Intent.否则,后续的getIntent()都是得到上一次设置或第一次启动时的Intent。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值