zoukankan      html  css  js  c++  java
  • Android-Activity启动模式-应用场景

    在上一篇博客中,Android-Activity启动模式(launchMode),就介绍了Activity四种启动模式的特点与使用等,但是到底什么样子的场景,去使用什么样子的启动模式呢

     

    Activity启动模式分为四种:

      

      如果不配置:launchMode,默认就是:standard 标准的

      standard 标准的

      singleTop 独占顶端

      singleTask 单任务

      singleInstance 单实例


    任务栈存放Activity引用  任务栈 进栈 出栈

    最上面的Activity,可以称为:TopActivity   最顶端的Activity

    最下面的Activity,可以称为:BaseActivity 最底端的Activity

     


    Activity启动模式,不出意外,使用最多的一定是默认的,standard 标准的

    但是standard 标准的 这种启动模式,每启动一个Activity 就进栈一个Activity,这样有些情况下是不合理的,我的Activity在最顶端就没有必要,再次启动进栈一个 或者启动进栈多个

    ,Activity的引用重复,这样不利于ActivityManager的管理,任务栈Activity引用重复,当点击返回Back操作的时候,体验非常不好;

    在App应用中,在TopActivity会被再次启动或者多次启动的时候,就可以采用singleTop来解决,任务栈Activity引用的重复,利于ActivityManager的管理,让体验更加好等...

    Android操作系统的 浏览器 书签 Activity的启动模式 就是采用 singleTop


     

    一般情况下,应用程序的主界面(MainActiviy),的启动模式是SingleTask,为什么呢,请看以下图:

     Android操作系统 浏览器的主界面Activity的启动模式就是 singleTask


    singleInstance 单实例,一个Activity被其他方多次调用(如果不用singleInstance,那会很混乱,好几个人打电话过来怎么办,所以需要singleInstance),

                并且这个Activity对性能要求高

    Android操作系统/package/apps/Phone/AndroidManifest.xml  找到通话界面

    Android操作系统的 通话界面Activity 同时接听两个电话 就体现了singleInstance的特点

    singleInstance除了管理Activity界面,不混乱,不多次进栈,等等。

    还有另外一个原因:(singleInstance会开辟一个新的任务栈,来存放Activity的引用,可以提高性能,正好通话界面非常注重性能,因为通话界面 是去启动硬件猫打电话系列操作)

    Android操作系统的应用Phone-->通话界面的启动模式为什么不用标准模式standard

    答:1.会非常混乱,例如:多个人打电话过来接听,或者在 操作系统的联系人应用中可以看到,在拨打电话的应用也可以看到,任务栈会被进栈多次,管理非常混乱。

      2.standard不会开辟新的任务栈,效率不高,通话界面需要去启动硬件的猫..,很耗时。

    Android操作系统的应用Phone-->通话界面的启动模式为什么不用独占顶端模式singleTop ?

    答:1.无法保证通话界面Activity在顶端,所以会非常混乱,例如:多个人打电话过来接听,或者在 其他应用打开,在拨打电话的应用也可以看到,任务栈会被进栈多次,管理非常混乱。

      2.singleTop不会开辟新的任务栈,效率不高,通话界面需要去启动硬件的猫..,很耗时。

    Android操作系统的应用Phone-->通话界面的启动模式为什么不用单任务模式singleTask ?

    答:1.singleTask单任务模式,会从底端往上找,一旦找到就直接杀到顶端,这是不合理的,不能杀死其他在singleTask之上的Activity。

      2.singleTask不会开辟新的任务栈,效率不高,通话界面需要去启动硬件的猫..,很耗时。

  • 相关阅读:
    Linux远程复制scp和rsync区别
    一个线上问题的思考:Eureka注册中心集群如何实现客户端请求负载及故障转移?
    docker离线安装
    centos7 docker 宿主机不能访问容器问题解决
    nginx 或 tengine安装错误提示:./configure: error: the HTTP rewrite module requires the PCRE library
    redhat 安装中文 支持中文
    rpm忽略依赖,强制安装,加--force --nodeps ( warning: perl-Test-Nginx-0.28-1.el6_10.noarch.rpm: Header V4 RSA/SHA1 Signature, key ID d5edeb74: NOKEY error: Failed dependencies:)
    redhat6 安装openresty
    redhat6 Unable to establish SSL connection.
    Lua入门脚本(与Redis结合)
  • 原文地址:https://www.cnblogs.com/android-deli/p/10113220.html
Copyright © 2011-2022 走看看