Android——onNewIntent()的回调时机

@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

}

}




在这种模式下,当按下home键以后,有以下回调:



![](https://img-blog.csdnimg.cn/20200508101352681.png)



 这个时候呢,再次回到app中,有两情况:



第一种:从应用窗口栏,点击打开,这时候并不会回调onNewIntent()



![](https://img-blog.csdnimg.cn/2020050810162532.png)



 第二种:再次点击桌面应用图标打开,可以看到,这个时候回调了onNewIntent()



![](https://img-blog.csdnimg.cn/20200508101754334.png)



注:这种情况也有特殊性:只有当前的活动为app的main页面时,才会触发



![](https://img-blog.csdnimg.cn/20200508103928953.png)



在standard模式下,启动新的活动,为了和其他启动模式做一个比较,也测一下这种情况:从当前activity启动当前activity



public class FirstActivity extends BaseActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    Button btnStartSecond = findViewById(R.id.btn_start_second);

    btnStartSecond.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View v) {

            Intent intent = new Intent(FirstActivity.this,

                    FirstActivity.class);

            startActivity(intent);

        }

    });

}

}




![](https://img-blog.csdnimg.cn/20200508102551342.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NDc4Mjc0,size_16,color_FFFFFF,t_70)



 可以看到,并不会回调onNewIntent(),其中回调了onCreate(),再次新建了一个活动,现在栈中有两个FirstActivity实例



其实这种情况和打开一个新的actiity并无差别。



 2. 当activity为singleTop时:



![](https://img-blog.csdnimg.cn/20200508103210146.png)



 在这种模式下,和standard的home情况一致,和启动新的activity再返回也一样,但和上面的启动当前活动有所成差别:



也就是从FirstActivity跳转到FristAvtivity:



![](https://img-blog.csdnimg.cn/20200508105615511.png)



这种情况就和standard模式有区别了,会回调



3.当activity为singleTask时:



FirstActivity -》FristAvtivity :和singleTop一样



FirstActivity -》SecondActivity -》FristAvtivity:



![](https://img-blog.csdnimg.cn/20200508112653878.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NDc4Mjc0,size_16,color_FFFFFF,t_70)



这种情况和按home键,在重启,是一样的



但是这种模式和standard不同的地方在于:当我们跳转到SecondActivity再home,再重启app时,



会打开FirstActivity。standard模式下,是会打开SecondActivity的。



4.当activity为singleInstance时:



和singleTask一样。



到这里基本上水落石出了,总结如下:



1.不论什么模式,只要是重启了程序,都会执行onNewIntent()。这种情况的区别在于:



注:-》是指 start 而不是back

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值