AndroidManifest.xml文件详解(application)

本文详细解析了AndroidManifest.xml中的元素,包括android:allowClearUserData、android:allowTaskReparenting等重要属性,阐述了它们在应用程序运行、任务管理、数据恢复等方面的作用,帮助开发者理解Android应用的配置和行为。
摘要由CSDN通过智能技术生成
<application android:allowTaskReparenting=["true" | "false"]
             android:backupAgent="string"
             android:debuggable=["true" | "false"]
             android:description="string resource"
             android:enabled=["true" | "false"]
             android:hasCode=["true" | "false"]
             android:hardwareAccelerated=["true" | "false"]
             android:icon="drawable resource"
             android:killAfterRestore=["true" | "false"]
             android:label="string resource"
             android:logo="drawable resource"
             android:manageSpaceActivity="string"
             android:name="string"
             android:permission="string"
             android:persistent=["true" | "false"]
             android:process="string"
             android:restoreAnyVersion=["true" | "false"]
             android:taskAffinity="string"
             android:theme="resource or theme"
             android:uiOptions=["none" | "splitActionBarWhenNarrow"] >
    . . .
</application>


被包含于(CONTAINED IN):

<manifest>

能够包含的元素(CAN CONTAIN):

<activity>

<activity-alias>

<service>

<receiver>

<provider>

<uses-library>

说明(DESCRIPTION):

这个元素用于应用程序的声明。它包含了每个应用程序组件所声明的子元素,并且还有能够影响所有组件的属性。其中的很多属性(如icon、label、permission、process、taskAffinity和allowTaskReparenting)会给组件元素中对应的属性设置默认值。其他的给是应用程序整体设置的值(如debuggable、enabled、description、allowClearUserData),并且这些属性值不能被组件的属性所覆盖。

属性(ATTRIBUTES):


1、android:allowClearUserData

是否给以用户删除用户数据的权限,如果为true应用管理者就拥有清除数据的权限;false没有。默认为true


2、android:allowTaskReparenting

当一个与当前任务有亲缘关系的任务被带到前台时,用这个属性来指定应用程序中定义的Activity能否从他们当前的任务中转移到这个有亲缘关系的任务中。如果设置为true,则能够转移,如果设置为false,则应用程序中的Activity必须保留在它们所在的任务中。默认值是false。

<activity>元素有它们自己的allowTaskReparenting属性,它能够覆盖<application>元素中的设置。


主要作用是activity的迁移,即从一个task迁移到另一个task,这个迁移跟activity的taskAffinity有关,必须是将该activity从旧的 taskAffinity迁移到新的taskAffinity中.只有设置了FLAG_ACTIVITY_RESET_TASK_IF_NEEDED标识才会用到该属性。从home上启动的程序都会设置该Flag,会进行task reset.

下面举个例子,有两个apk

apk1中含有个Activity:MainActivityA和ActivityB, ActivityB设置了allowTaskReparenting为false.
apk2中含有两一个activity:MainActivityB,MainActivityB点击的时候会启动ActivityB

首先我们启动apk2,进入MainActivityB,点击MainActivityB会进入ActivityB, 按home键,再从Home键启动apk1,用dumpsys工具得到这个时候的堆栈:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值