| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> android学习笔记:activity(3) -> 正文阅读 |
|
[移动开发]android学习笔记:activity(3) |
1.任务是用户在执行某项工作时与之互动的一系类activity的集合。这些activity按照每个activity打开的顺序排列在一个返回栈堆中 2.Android7.0(API级别24)及更高版本支持多窗口环境,而在这种环境下,系统会单独管理每个窗口的任务;而每个窗口可能包含多项任务 3.在当前activity启动另一个activity时,新的activity将被推送到栈顶并获得焦点,上一个activity任保留在栈堆中,但会停止。当activity停止时,系统会保留其界面的当前状态。当用户按返回返回按钮时,当前activity会从栈堆顶部退出(该activity销毁) 4.任务是一个整体单元,当用户开始一个新任务或通过主屏幕按钮进入主屏幕时,任务可移致“后台”,此时任务中的所有activity都会停止 5.多个任务可以同时在后台运行。但是,如果影虎同时运行很多后台任务,系统可能会为了恢复内存而开始销毁后台activity,导致activity状态丢失。 6.activityA启动activityB,activityB可以在其清单中定义如何与当前任务相关联(如果有关联的话),activityA也可以请求activityB应该如何与当前任务关联,如果两个activity都定义了activityB应该如何与任务相关联,将优先遵循activityA的请求(在intent中定义),而不是activityB的请求(在清单中定义)注:有些启动模式只能在清单中添加,而有一些只能通过intent标记定义 7.可以通过使用清单文件或使用intent标记来定义activity的新实例如何余当前任务关联 8.在清单文件声明activity时,可以使用<activity>元素的launchMode属性来指定activity应该如何与任务关联 standard:(默认模式)默认值,系统在启动该activity的任务中创建activity的新实例,并将intent传送给该实例。activity可以多次实例化,每个实例可以属于不同的任务,一个任务可以拥有多个实例 singleTop:如果当前任务的顶部已经存在activity的实例,则系统会通过调用其onNewIntnet()方法来将intent传送给该实例,而不是创建activity的新实例。activity可以多次实例化,每个实例可以属于不同的任务,一个任务也可以拥有多个实例(但前途是返回栈顶部的activity不是该activity的现有实例) singleTask:系统会创建新任务,并实例化新任务的根activity。但是,如果另外的任务中已经穿在该activity的实例,则系统会通过调用其onNewIntent()方法将intent转送到该现有实例,而不是创建新实例。activity一次只能有一个实例存在。注:虽然activity在新任务中启动,但用户按返回按钮任然会返回到上一个activity singleInstance:与singleTask相似,唯一的不同就是系统不会将任何其他activity启动包含到该实例的任务中。该activity始终是其任务唯一的成员;由该activity启动的任何activity都会在其他的任务中打开。 9.启动activity时,可以在传送给startActivity()的intent中添加相应的标记来修改activity与其任务的默认关联,可以使用以下标记来修改默认行为: FLAG_ACTIVITY_NEW_TASK:与singleTask具有相同功能 FLAG_ACTIVITY_SINGLE_TOP:与singleTop具有相同功能 FLAG_ACTIVITY_CLEAR_TOP:如果要启动的activity已经在当前任务中运行,则不会启动该activity的新实例,而是会销毁位于它之上的其他所有activity,并通过onNewIntent()将此intent传送给它的已恢复实例(现在位于栈顶部)注:如果指定activity的启动模式为“standard”,系统也会将其从栈堆中移除,并在它的位置启动一个新实例来处理传入的intent。这是因为当启动模式为“standard”时,始终会为新intent创建新的实例 10.“亲和性”表示activity倾向于属于哪个任务。默认情况下,同一应用中的所有activity彼此具有亲和力,因此,在默认情况下,同一应用中的所有 Activity 都倾向于位于同一任务。可以使用<activity>元素的taskAffinity属性修改任何给定activity的亲和性,亲和性可在两种情况下发挥作用: 当启动activity的intent包含FLAG_ACTIVITY_NEW_TASK标记时 默认情况下,新activity会启动到调用startActivity()的activity的任务中。它会被推送到调用方activity所在的返回栈堆中。但是如果传递给startActivity()的intent包含FLAG_ACTIVITY_NEW_TASK标记,则系统会寻找其他任务来容纳新activity。通常是一个新任务,但也可能不是。如果已存在与新activity具有相同亲和性的现有任务,则会将activity启动到该任务中,如果不存在,则会启动一个新任务 如果此标记导致activity启动一个新任务,而用户按下主屏幕按钮离开该任务,则必须为用户提供某种方式来返回到该任务。有些试图(例如通知管理器)总是在外部任务中启动activity,而不是在他们自己的任务中启动,因此他们总是将FLAG_ACTIVITY_NEW_TASK添加到传递给startActivity()的intent中。如果activity可由外部实体调用,而该实体可能使用此标记,请注意用户可以通过一种独立的方式返回到所启动的任务。 当activity的allowTaskReparenting属性设置为“true”时,在这种情况下,一旦和activity有亲和力的activity进入前台运行,activity就可以从其启动的任务转移到该任务 11.如果用户离开任务较长时间,系统会清楚任务中除根activity以外的所有activity。当用户再次返回到该任务时,只有根activity会恢复,可以使用一些activity属性来修改此行为 alwaysRetainTaskState ? ? ? ? 如果在任务的根activity中将该属性设为“true”,则不会发生上述默认行为。即使经过很长一段时间后,任务仍会在其栈堆中保留所有的activity clearTaskOnLaunch ? ? ? ? 如果在任务的根activity中将该属性设为“true”,那么只要用户离开任务再返回,栈堆就会被清除到只剩根activity。也就是说,它与alwaysRetainTaskState正好相反。用户始终会返回到任务的初始状态,即便只是短暂离开任务也是如此 finishOnTaskLaunch ? ? ? ? 该属性与clearTaskOnLaunch类似,但它只会作用于单个activity而非整个任务。他还可导致任何activity消失,包括根activity。如果该属性设为“true”,则activity仅会在当前会话中归属于任务。如果用户离开任务再返回,则该任务将不再存在 12.可以设置一个activity作为任务的入口点,方法是为该activity提供一个intent过滤器,并将“android.intent.action.MAIN”作为制定操作,将"android.intent.category.LAUNCHER"作为指定类别 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/31 5:53:28- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |