最近做一个打电话相关的小app,用到了2个平时了解得少的属性,也是看到一个国外相同项目这个做的,开始是直接复制过来的,没去详细了解,项目中期时,随手删了2行配置的属性,由于平时基本没用到,所以以为用处不大,结果出了写小问题,这里记录一下。不废话了,直接贴代码和解释吧,以下是我测试后的个人理解。
<activity android:name=".callscreen.CallScreenActivity" android:taskAffinity="com.mythlink.callapp.callScreen"/>
<!-- android:taskAffinity重新分配一个[task]任务名称(其它activity也可使用该名称)
[ps:因为有些项目需求是,点击应用图标必须显示项目主界面,有这个属性就很好办了,把其它activity重新分配一下taskAffinity,
这样就不会显示这些界面了,因为默认的taskAffinity栈顶不是这些activity]。
如果不需要执行activity中的onNewIntent方法,最好是使用android:finishOnTaskLaunch="true",这样更好。
-->
<activity android:name=".settings.ContactSettingActivity" android:finishOnTaskLaunch="true"/>
<!-- android:finishOnTaskLaunch="true"在配置了该属性为true的activity中按home键返回到[home screen]屏幕后,再点击该应用的图标启动程序时,
则系统会调用该activity的[onDestroy]销毁。因为点击应用的图标启动程序时,重新启动了这个任务。
[ps:因为有些项目需求是,点击应用图标必须显示项目的主界面且销毁某些之前打开的界面]。暂时还不会重新启动自己分配的[taskAffinity]任务,
所以只能使用默认系统的taskAffinity,然后点击应用图标启动程序进行触发 。
-->
注意:
以上2个activity不在同一个task中,如果先打开CallScreenActivity再打开ContactSettingActivity,这时当ContactSettingActivity执行onDestroy后,会返回到跟它相同taskAffinity的activity中,而不是返回到CallScreenActivity界面,只有在这个taskAffinity的栈中没有任何activity时,才会再次返回到上一个taskAffinity中的相应activity界面。
如果把2个activity都配置为android:launchMode="singleInstance"模式,那么它们都不受task管理,也就是说配置android:finishOnTaskLaunch是无效的。配置android:taskAffinity在这里也失效一部分功能,目前知道它还保留有的功能:就是配置android:excludeFromRecents="true"后,在不同的task中不受影响,且还具备相同的task系统默认返回栈顶activity。
如果启动模式为singleInstance,那么onActivityResult将会失去作用,它的resultCode会直接返回Activity.RESULT_CANCELED。
分享到:
相关推荐
* android:finishOnTaskLaunch:是否在任务启动时结束Activity * android:icon:Activity的图标 * android:launchMode:Activity的启动模式 * android:multiprocess:是否多进程 * android:noHistory:是否记录 ...
* android:finishOnTaskLaunch:指定Activity是否在启动时结束Task * android:icon:指定Activity的图标 * android:label:指定Activity的标签 * android:launchMode:指定Activity的启动模式 * android:...
在Android应用开发中,`Activity`作为四大组件之一,承载着界面交互的主要职责。正确地配置`Activity`的各种属性对于优化用户体验、提升应用性能至关重要。本文将详细解读`Activity`的常见属性及其作用,帮助开发者...
从给定的文件信息来看,虽然标题和描述指向了`EditText`与`TextView`的属性大全,但在部分内容中,却详细列举了与Android Activity相关的属性。因此,我将基于这部分内容,深入解析与Activity相关的各个属性,以满足...
`android:finishOnTaskLaunch` 如果设置为`true`,当用户从Home屏幕重新启动任务时,将关闭所有之前存在的Activity实例,仅显示最新启动的那个。 #### 9. `android:icon` 和 `android:label` 分别定义了Activity...
- `behind`:与前一个Activity相同的屏幕方向。 - `sensor`:根据设备传感器确定屏幕方向。 - `nosensor`:忽略设备传感器,采用固定方向。 **18. `android:stateNotNeeded`** - **功能描述**:指定Activity被...
只有具有相应权限的应用才能启动或与之交互。 #### android:process 指定了`Activity`运行时所在进程的名称,支持更细粒度的资源管理和隔离。 #### android:screenOrientation 控制`Activity`的屏幕方向。可以设置...
- **`android:finishOnTaskLaunch`**:如果设置为 `true`,则在启动一个新的Task时,此Activity将被销毁。 - **`android:icon`**:指定显示在Launcher或任务切换器中的图标资源ID。 - **`android:label`**:为...
- `"behind"`:与前一个`Activity`相同的屏幕方向。 - `"landscape"`:横屏。 - `"portrait"`:竖屏。 - `"sensor"`:根据设备传感器确定屏幕方向。 - `"nonsensor"`:忽略设备传感器。 - **作用**:定义`...
在Android应用开发中,Activity是核心组件之一,用于呈现用户界面并与用户进行交互。Activity具有丰富的属性设置,这些属性能够影响其生命周期、行为以及与其他组件的交互方式。以下是对Activity重要属性的详细解释...
### Android Developer Docs 中文翻译 Part 2:应用程序基础之 Activities 和 Tasks #### 一、引言 本章节将继续深入探讨Android开发文档中的“应用程序基础”部分,重点介绍Activities与Tasks的相关概念及其工作...
在Android系统中,任务管理器(Task Manager)是至关重要的组成部分,它负责管理和调度应用程序的任务与进程,确保系统的高效运行。下面将详细讲解Android任务管理器的相关知识点。 1. **任务与活动(Tasks and ...