Android启动模式的探索
来源:互联网 发布:手机淘宝如何五星好评 编辑:程序博客网 时间:2024/05/16 23:36
(1)standard模式:标准模式,这是系统的默认模式。每次启动一个Activity都会重新建一个新的实例,不管这个实例是否已经存在。被创建的Activity的生命周期它的onCreate()、onStart()、onResume()都会被调用。一个任务栈当中会有同一个Activity的多个实例,多个实例也可以属于不同的任务栈。如果A Activity启动了 B Activity,那么B Activity就会进入到A Activity的任务栈中。当使用ApplicationContext去启动standar模式的Activity会报错,因为standar模式的Activity默认会进入启动它的Activity的任务栈中,但是非Activity类型的Context(如ApplicationContext)没有任务栈,解决错误需要给待启动的Activity指定FLAG_ACTIVITY_NEW_TASK标记位,这样启动的时候就会创建一个新的任务栈。
(2)singleTop模式:栈顶复用模式。如果新Activity位于任务栈的栈顶,那么此Activity不会被重新创建,同时它的onNewIntent方法会被回调。这个Activity的onCreate、onStart、不会被系统调用,因为它们没有发生改变。如果新Activity的实例已存在但是不在栈顶那么Activity仍然会重建。
(3)singleTask模式: 栈内复用模式。 只要Activity在一个栈中存在,那么多次启动此Activity都不会重建实例,系统会回调其onNewintent. 假如Activity A是singleTask模式,A请求启动后,系统首先查找是否存在A想要找的任务栈,假如不存在则新建任务栈然后把创建A实例放入栈中;假如存在,就看A在该栈中是否存在实例,如果存在系统就会把A调到栈顶并且调用它;假如实例不存在,就创建A的实例并且把A压入栈中。
注意一个特例:如果Activity D的所需要任务栈为S1,并且当前任务栈情况为ADBC(C为栈顶)系统会把D切换到栈顶并调用其onNewIntent,但是不会重建。同时singleTask有clearTop效果,会导致栈内所有在D上面的Activity全部出栈。只剩下AD。
(4)singleInstance模式:单实例模式。它拥有singleTask模式的所有特性,另外,具有该种模式的Activity只能单独的位于一个任务栈。比如Activity A是singleInstance,A启动后系统会为他新建一个任务栈,然后A独自在这个新的任务栈中。
TaskAffinity:任务相关性 这个参数标识了Activity所需要的任务栈的名字。默认情况下是应用的包名,也可以认为指定。TaskAffinity和singleTask配对使用时,TaskAffinity是具有该模式的Activity的目前任务栈的名字。
任务栈分前台后台,后台任务栈得Activity处于暂停状态,可通过切换切换到前台。
标志位
Activity的Flags有很多,常用的标记位有:
- FLAG_ACTIVTTY_NEW_TASK
等同于singleTask
- FLAG_ACTIVTTY_SINGLE_TOP
等同于singleTop
- FLAG_ACTIVTTY_CLEAR_TOP
- FLAG_ACTIVTTY_EXCLUDE_FROM_RECENTS
不会出现在Activity的历史列表里
- Android启动模式的探索
- 探索Activity 的启动模式
- Android开发艺术探索--singleTask的启动模式--笔记
- Android开发艺术探索笔记一:Activity的启动模式
- android开发艺术探索 3 Activity的启动模式
- 《Android开发艺术探索》读书笔记----第一章:Activity的启动模式
- Android开发艺术探索-Activity的启动模式
- Android开发艺术探索读书笔记(一):Android的生命周期与启动模式
- 关于《Android开发艺术探索》的Activity启动模式的讨论
- 《Android开发艺术探索》笔记之Activity的生命周期和启动模式
- 《Android开发艺术探索》读书笔记--part1 Activity的生命周期和启动模式
- 第一章Activity的生命周期和启动模式(Android开发艺术探索)
- 《Android开发艺术探索》读书笔记 (1) 第1章 Activity的生命周期和启动模式
- 《Android开发艺术探索》读书笔记——Activity的生命周期和启动模式
- 【读书笔记】【Android 开发艺术探索】第1章 Activity 的生命周期和启动模式
- <<Android 开发艺术探索>> 第一章 Actiivty的生命周期和启动模式
- Android开发艺术探索--第一章Acitivity的生命周期和启动模式
- Activity的四种启动模式--看Android开发艺术探索总结
- Node.js是如何解决服务器高性能瓶颈问题的
- 2017ACM/ICPC广西邀请赛-重现赛
- 灰度共生矩阵 matlab里的 graycomatrix函数
- 关于Hashtable和HashMap的区别 -- Java 基础
- 76.窗口滑动最小子串
- Android启动模式的探索
- Spring学习之Spring概述(一)
- Phpstudy+WordPress安装详解
- nodejs的路由机制
- HTML文档--超链接等基本编辑命令
- 关于QR二维码的编码模式
- 小熊吃糖(结构体排序)
- 2014 Multi-University Training Contest 1 A(hdu 4861 打表找规律)
- R----决策树