我是靠谱客的博主 高挑冬天,最近开发中收集的这篇文章主要介绍4.4 Activity的4种加载模式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

    • standard模式
    • singleTop模式
    • singleTask模式
    • singleInstance模式

在AndroidManifest.xml中配置Activity时,可以配置android:launchMode,该属性支持用于配置Activity的加载模式,支持4个属性值:

  • standard:标准模式,默认的加载模式。
  • singleTop:Task栈顶单例模式。
  • singleTask:Task内单例模式。
  • singleInstance:全局单例模式。

Android采用Task来管理多个Activity,当我们启动一个应用时,Android就会为之创建一个Task,然后启动这个应用的入口Activity。我们可以将Task理解为Activity栈,Task以栈的形式来管理Activity:先启动的Activity被放在Task栈底,后启动的Activity被放在Task栈顶。但是Android并没有为Task提供API,所以我们不能真正访问Task,只能调用Activity的getTaskId()方法来获取Activity所在的Task的ID。

standard模式

每次通过standard模式启动目标Activity时,Android总会为目标Activity创建一个新的实例,并将该Activity添加到Task栈中——这种模式下不会启动新的Task,新Activity将被添加到原有的Task中。

singleTop模式

与standard模式类似,不同的是,当将要启动的目标Activity位于Task栈顶时,系统不会重新创建目标Activity的实例,而是直接复用已有的Activity实例。

singleTask模式

使用singleTask模式可以保证在用一个Task内只有一个实例。
在该模式下启动目标Activity时,如果目标Activity不存在,则创建目标Activity并添加到Task栈顶;如果目标Activity存在且位于Task栈顶,则不会创建目标Activity;如果目标Activity存在但不位于Task栈顶,则将位于目标Activity之上的所有Activity移出Task栈,从而使得目标Activity位于栈顶。

singleInstance模式

该模式下启动目标Activity时有两种情况:

  • 如果目标Activity不存在,系统会先创建一个全新的Task,在创建目标Activity的实例,并将它放入新的Task栈顶。
  • 如果目标Activity已存在,无论它位于哪个应用程序中、位于哪个Task中,系统都会把该Activity所在的Task转到前台,从而使该Activity显示出来。

因此,采用singleInstance模式加载的Activity总是位于栈顶,且它所在的Task只包含这一个Activity。

最后

以上就是高挑冬天为你收集整理的4.4 Activity的4种加载模式的全部内容,希望文章能够帮你解决4.4 Activity的4种加载模式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部