[Android]SingTask 与 onNewIntent

在开发中经常会遇到这种情况,比如在主页面进入子功能页面,一步一步很多层,然后子功能完成,要退回主页面,这时候我们应该怎么处理?


其实合理运用Android的lunchMode就可以解决:
假设主页面是MainActivity, 子功能页面SubActivity1,SubActivity2…..
设置MainActivity 的lunchMode=singTask(故名思意,就是让这个activity只存在与唯一一个task里)

SubActivity? 调用startActivity()启动MainActivity后,有这几种情况:

  1. 如果调用startActivity的SubActivity?与MainActivity在同一个task里,则移除MainActivity顶部所有activitys,不调用MainActivity的oncreate(因为它本身已经存在,只不过是推到栈顶),但会调用onNewIntent(Intent newIntent);
  2. 如果调用startActivity的SubActivity?与MainActivity在不同task里,则将MainActivity的栈整体移至启动task的栈顶,并如1.一样,移除MainActivity顶部activitys,调用onNewIntent(Intent newIntent);
  3. 如果MainActivity不存在,则启动MainActivity,同Activity正常创建生命周期。

  • OnNewIntent(Intent newIntent)注意事项;
    在该方法中只是会传入一个intent,但是activity的Intent并不会被设置,所以要setIntent(intent)后才能在Activity中获得需要的Intent;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值