设置了
singleTask
启动模式的Activity,它在启动的时候,系统会先查找有没有taskAffinity
属性值相同的task存在。如果存在这样的task,就会在这个task中启动;否则就会在新task中启动。因此如果我们想要设置了singleTask
启动模式的act在新的task中启动,就要为它设置一个独特的taskAffinity
属性值,因为默认一个app的所有act都有同一个taskAffinity
值,那就是应用包名。如果设置了
singleTask
启动模式的act是在已有task中启动的,系统会在此task中查看是否存在这个act的实例,如果没有的话,会简单创建并加进去,否则并不会创建此act的新实例,而是已有实例的onNewIntent(Intent)
方法会被调用(紧接着的是onResume方法),并且在此act之上的所有别的act都会出栈,走完整的销毁流程,即他们的onDestroy()
之类的方法会被调用,从而确保这个singleTask
act的实例此时位于task的栈顶。
相关文章
- JAVA设计模式 2【创建型】原型模式的理解与使用
- Android N分屏模式Activity生命周期的变化
- Redis集群理解以及Tendis的优化-哨兵模式
- Android应用程序启动详解(二)之Application和Activity的启动过程
- 高级java每日一道面试题-2025年01月24日-框架篇[SpringBoot篇]-如何理解 Spring Boot 中的 Starters(启动器) ?-我回答:
- Android 8.0 Activity的启动流程
- 显示和隐式启动Activity的方式
- android activity入口指定与更改(即启动acitivity的设置与更换)
- 原型模式的理解和实践
- 一篇文章彻底理解 HDFS 的安全模式