zoukankan      html  css  js  c++  java
  • Android-Activity四种启动模式

    Activity四种启动模式:

    (一)、基本描述
    1. standard:标准模式:如果在mainfest中不设置就默认standard;standard就是新建一个Activity就在栈中新建一个activity实例;
    2. singleTop:栈顶复用模式:与standard相比栈顶复用可以有效减少activity重复创建对资源的消耗,但是这要根据具体情况而定,不能一概而论;
    3. singleTask:栈内单例模式,栈内只有一个activity实例,栈内已存activity实例,在其他activity中start这个activity,Android直接把这个实例上面其他activity实例踢出栈GC掉;
    4. singleInstance :堆内单例:整个手机操作系统里面只有一个实例存在就是内存单例;
    (二)、场景设置

    Activity的启动模式的应用的设置是和它的开发场景有关系的,在APP中打开新的Activity的基本上分为两种情况:

    1. 目标Activity是本应用中的Activity,即它的启动模式是可以直接在fanifest中配置或者默认为standard,任务栈也可以自己随意设置;
    2. 目标Activity是第三方APP中的Activity,这个时候就需要先考虑打开新Activity的是和自己APP放在同一任务栈中还是新的task中【这个是很重要的因为在Android的机制中:同一个任务栈中的activity的生命周期是和这个task相关联的[具体实例见下文]】,然后考虑Activity的启动模式; 所以Android提供了优先级更高的设置方式在Intent.setFlags(int flags),通过这setFlags就可以为打开第三方的APP中Activity设置任务栈和启动模式了,具体设置就自己去看源码了。

    二、Activity四种启动模式常见使用场景:

    LauchModeInstance
    standard mainfest中没有配置就默认标准模式
    singleTop 登录页面、WXPayEntryActivity、WXEntryActivity 、推送通知栏
    singleTask 程序模块逻辑入口:主页面(Fragment的containerActivity)、WebView页面、扫一扫页面
    singleInstance 系统Launcher、锁屏键、来电显示等系统应用
  • 相关阅读:
    使用 C# 2008 Express Edition 编写的猜数字游戏
    话说三层
    在asp.net 1.1 中使用Ajax
    vs2005 调试时出现“无法附加。绑定句柄无效”的解决办法
    解决“你可能没有权限使用网络资源”的问题
    html&js 在firefox与IE中呈现存在差异的解决方法总结
    sql 事务 全攻略
    mssql的TSQL教程(从建登陆到建库、表和约束)(1)
    数据库练习题
    用批处理附加数据库
  • 原文地址:https://www.cnblogs.com/hustcser/p/9382005.html
Copyright © 2011-2022 走看看