连续点击后重复跳转 Activity

under Android  tag     Published on April 12th , 2021 at 02:09 pm

跳转界面比较慢的时候,如果用户连续点击,就会产生好几个跳转的 Activity,可以通过 Activity 的启动模式解决。

打开 AndroidManifest.xml,把 Activity 的启动模式修改为 singleTop

2166945035.png

singleTop是 Activity 的四种启动模式之一,如果栈中存在该 activity,不会在栈中重复创建该 activity 的新实例,会调用该 activity 的 onNewInstance()。该模式下调用 onNewInstance() 的 activity 生命周期:onPause() -> onNewInstance() -> onResume()。(A2为目标 Activity 实例)
4283346432.png

其他三种:

standard:activity 默认启动模式,每启动一个 activity 就会将 activity 放入栈顶。
3368312052.png

singleInstance :如果创建的 activity 不存在则创建一个 activity ,同时创建一个栈,如果存在则将存在的 activity 移动到栈顶。如果已经跳转回创建过目标 Activity 实例,则不会创建新的栈堆,而是将以前创建过的 Activity 实例的栈堆唤醒。这个模式很奇怪,当我跳转再次跳转到 A1 后,切回主界面,再切回程序,A2 就不在了,和图中描述情况不同哈。(A2为目标 Activity 实例)
2789011819.png

singleTask:如果该 activity 在栈顶,则和 singleTop 一样,如果不在,则会移除该 activity 上面所有 activity,使该 activity 留在栈顶。(A1为目标 Activity 实例)
3259833678.png

补充说明:
栈:先进后出;栈顶:在栈顶的 activity 是当前显示在界面上的 activity

参考文章:https://blog.csdn.net/zy_jibai/article/details/80587083


本文由 surface 创作,采用 知识共享署名4.0 国际许可协议进行许可,转载前请务必署名
  文章最后更新时间为:October 15th , 2021 at 05:41 pm
分享到:Twitter  Weibo  Facebook