天天看点

关于singleTop 并没有调用onNewIntent()

在做版本升级时,我们的版本升级采用的是 activity。在收到版本升级推送时,跳转到版本升级界面。

因为是版本升级不论当前在哪个界面,都要跳转到版本更新界面。所以写在BaseActivity 所以如果有多个activity存活时,也就是存在多个BaseActivity 的实例,那么就会执行多次。 所以想到将activity的启动模式设置为singleTop  栈顶复用。

但是在调试时,发现,在跳转到版本升级界面,关掉后,又再次打开一个版本升级activity。按照思路来讲,不应该出现这样的问题。

就好像下面的代码:

@Override
        public void onClick(View view) {
           // attemptLogin();
            startActivity(new Intent(LoginActivity.this,SingleTopActivity.class));
            startActivity(new Intent(LoginActivity.this,SingleTopActivity.class));
        }                

你会想,打开一个singleTopActivity 在执行第二次打开的时候不走 onCreate  而是走 onNewIntent()  

但是在调试时发现,会执行两次onCreate() 。

到底是什么原因呢?

你第一次开启activity时第二次的根本还没有启动,当你退出第一个时,这时才开启第二次的activity,但此时第一个activity已经destroy了,所以第二次的只能onCreate了。

在连续执行启动activity时 代码不执行。在你关掉时 执行第二次。

这在我的代码中,正好出错了。 因为我的项目中,是在收到推送来进行检查跳转到版本升级activity的。

关于singleTop 并没有调用onNewIntent()

我在代码中设置了一个tag,在进入更新界面后,再收到通知代码不处理。在版本升级的activity 的 onDestroy()将标志位改为false

关于singleTop 并没有调用onNewIntent()

至于极光推送重复问题,我和后台核实,是不是重复调用了。确认没有,但是我的APP代码检查了,也没有多次注册。

猜测可能是多进程的问题。

关于singleTop 并没有调用onNewIntent()