Activity启动模式

Activity的四种启动模式示意图:

启动模式介绍:

因为不同的Activity有不同的目的

有些被设计成每发送一个intent都单独一个Activity工作,比如邮件客户端中撰写邮件的Activity,

而有些则被设计成单例的,比如邮件收件箱的Activity。

 比如搜索框, 使用singleTop, 

 

standard

这是默认的模式。

这种模式下,当Intent发送的时候,Activity总是被创建一个新的出来单独工作。

 

singleTop

  它的表现几乎和standard模式一模一样,一个singleTop Activity 的实例可以无限多,

  唯一的区别是如果在栈顶已经有一个相同类型的Activity实例,Intent不会再创建一个Activity,而是通过onNewIntent()被发送到现有的Activity

 

singleTask

这种模式和standard以及singleTop有很大不同。singleTask模式的Activity只允许在系统中有一个实例。如果系统中已经有了一个实例,持有这个实例的任务将移动到顶部,同时intent将被通过onNewIntent()发送。如果没有,则会创建一个新的Activity并置放在合适的任务中。

  在同一个应用中的情况

 

 

参考资料:

AndroidManifestActivity_launchMode

 Activity启动模式图文详解   原文: Understand Android Activity's launchMode: standard, singleTop, singleTask and singleInstance

任务和返回栈  Tasks and Back Stack

深入讲解Android中Activity launchMode - 技术小黑屋

Android任务和返回栈完全解析,细数那些你所不知道的细节 - 郭霖的专栏 - 博客频道 - CSDN.NET

探索Activity之launchMode - 简书

Android 之Activity启动模式(二)之 Intent的Flag属性 | skywang

这可能是目前最详细的安卓task, launchMode, intent flag测试分析与总结了 - Piasy的博客 | Piasy Blog

 Activity任务栈以及启动方式 - 简书

posted @ 2017-10-13 18:00  huyang011  阅读(174)  评论(0编辑  收藏  举报