`
iaiai
  • 浏览: 2180446 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android:taskAffinity与android:finishOnTaskLaunch之我见

 
阅读更多
最近做一个打电话相关的小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。
分享到:
评论

相关推荐

    AndroidManifest.xml文件剖析.pdf

    * android:finishOnTaskLaunch:是否在任务启动时结束Activity * android:icon:Activity的图标 * android:launchMode:Activity的启动模式 * android:multiprocess:是否多进程 * android:noHistory:是否记录 ...

    AndroidManifest.xml文件剖析[参考].pdf

    * android:finishOnTaskLaunch:指定Activity是否在启动时结束Task * android:icon:指定Activity的图标 * android:label:指定Activity的标签 * android:launchMode:指定Activity的启动模式 * android:...

    activity的设置大全

    在Android应用开发中,`Activity`作为四大组件之一,承载着界面交互的主要职责。正确地配置`Activity`的各种属性对于优化用户体验、提升应用性能至关重要。本文将详细解读`Activity`的常见属性及其作用,帮助开发者...

    EditText与TextView 属性大全

    从给定的文件信息来看,虽然标题和描述指向了`EditText`与`TextView`的属性大全,但在部分内容中,却详细列举了与Android Activity相关的属性。因此,我将基于这部分内容,深入解析与Activity相关的各个属性,以满足...

    android xml属性总结

    `android:finishOnTaskLaunch` 如果设置为`true`,当用户从Home屏幕重新启动任务时,将关闭所有之前存在的Activity实例,仅显示最新启动的那个。 #### 9. `android:icon` 和 `android:label` 分别定义了Activity...

    Android_XML属性大全

    - `behind`:与前一个Activity相同的屏幕方向。 - `sensor`:根据设备传感器确定屏幕方向。 - `nosensor`:忽略设备传感器,采用固定方向。 **18. `android:stateNotNeeded`** - **功能描述**:指定Activity被...

    Android activity属性

    只有具有相应权限的应用才能启动或与之交互。 #### android:process 指定了`Activity`运行时所在进程的名称,支持更细粒度的资源管理和隔离。 #### android:screenOrientation 控制`Activity`的屏幕方向。可以设置...

    android 学习心得

    - **`android:finishOnTaskLaunch`**:如果设置为 `true`,则在启动一个新的Task时,此Activity将被销毁。 - **`android:icon`**:指定显示在Launcher或任务切换器中的图标资源ID。 - **`android:label`**:为...

    android 属性

    - `"behind"`:与前一个`Activity`相同的屏幕方向。 - `"landscape"`:横屏。 - `"portrait"`:竖屏。 - `"sensor"`:根据设备传感器确定屏幕方向。 - `"nonsensor"`:忽略设备传感器。 - **作用**:定义`...

    Android开发中Activity属性设置小结

    在Android应用开发中,Activity是核心组件之一,用于呈现用户界面并与用户进行交互。Activity具有丰富的属性设置,这些属性能够影响其生命周期、行为以及与其他组件的交互方式。以下是对Activity重要属性的详细解释...

    android developer docs 中文翻译part2

    ### Android Developer Docs 中文翻译 Part 2:应用程序基础之 Activities 和 Tasks #### 一、引言 本章节将继续深入探讨Android开发文档中的“应用程序基础”部分,重点介绍Activities与Tasks的相关概念及其工作...

    Android.例子.实例.任务管理器

    在Android系统中,任务管理器(Task Manager)是至关重要的组成部分,它负责管理和调度应用程序的任务与进程,确保系统的高效运行。下面将详细讲解Android任务管理器的相关知识点。 1. **任务与活动(Tasks and ...

Global site tag (gtag.js) - Google Analytics