AndroidManifest具体解释之Application(有图更好懂)

可以包括的标签:

  1. <activity>
  2. <activity-alias>
  3. <service>
  4. <receiver>
  5. <provider>
  6. <uses-library>

经常使用的属性:

android:process

默认情况下,Android为每一个应用程序创建一个单独的进程,全部组件执行在该进程中,这个默认进程的名字通常与该应用程序的包名同样。比方

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.lt.mytest" >

那么该程序默认的进程名为com.lt.mytest

设置该属性能够使得本应用程序与其他应用程序共享同样的进程,只当这两个应用程序也共享一个拥有同样签名的UserId。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:sharedUserId="android.uid.phone" >

与其他应用程序共享的一个Linux User Id的名字。

默认情况下,Android为每一个应用程序分配一个唯一的User Id。

然而。假设有多个应用程序都将该属性设置为一个同样的值,那么它们将共享同样的Id。

假设这些应用程序再被设置成执行在一个同样的进程,它们便能够彼此訪问对方的数据。

android:allowbackup

是否将程序增加到系统的备份和恢复架构中。

android:taskAffinity

Activity的归属,也就是Activity应该在哪个Task中,Activity与Task的吸附关系。默认假设没有设置taskAffinity。则taskAffinity跟包名是一样的

taskAffinity 和 FLAG_ACTIVITY_NEW_TASK可用来决定activity启动时是否须要新建一个task。

我们分四种情况看一下这两个标志对启动activity的影响:(前提:从MainActivity中启动ActivityA)

1)、两个标志都不设置

2)、有FLAG_ACTIVITY_NEW_TASK

3)、无FLAG_ACTIVITY_NEW_TASK有taskAffinity (不同于MainActivity)

4)、有FLAG_ACTIVITY_NEW_TASK有taskAffinity

注意上面的标志都是针对于启动的ActivityA。FLAG_ACTIVITY_NEW_TASK  是在启动ActivityA的Intent中设置的,taskAffinity 是在AndroidManifest中ActivityA中设置,另外注意这里两个actiity的启动模式都设置为standard

1、先看第一中情况:

主要代码:

<activity android:name=".ActivityA"
			android:launchMode="standard"
			android:label="@string/title_activityA">
  <intent-filter>
	  <action android:name="com.leaves.ipanel.ActivityA"/>
	  <category android:name="android.intent.category.DEFAULT"/>
  </intent-filter>
</activity>  

MainActivity启动activity

public void onClick(View arg0) {
	// TODO Auto-generated method stub
	Log.i(TAG, "--onClick--task id = " + getCurrentTaskId());
	Intent intent = new Intent("com.leaves.ipanel.ActivityA");      

	startActivity(intent);
} 

启动A之后的堆栈:

2、有FLAG_ACTIVITY_NEW_TASK

我们加入FLAG_ACTIVITY_NEW_TASK

public void onClick(View arg0) {
	// TODO Auto-generated method stub
	Log.i(TAG, "--onClick--task id = " + getCurrentTaskId());
	Intent intent = new Intent("com.leaves.ipanel.ActivityA");
	intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
	startActivity(intent);
}

启动A之后的堆栈:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmlnY29udmllbmNl/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

3、无FLAG_ACTIVITY_NEW_TASK有taskAffinity (不同于MainActivity)

<activity android:name=".ActivityA"
            android:launchMode="standard"
            android:taskAffinity="com.leaves.test.ActivityA"
          android:label="@string/title_activityA">
       <intent-filter>
           <action android:name="com.leaves.ipanel.ActivityA"/>
           <category android:name="android.intent.category.DEFAULT"/>
       </intent-filter>
</activity> 
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        Log.i(TAG, "--onClick--task id = " + getCurrentTaskId());
        Intent intent = new Intent("com.leaves.ipanel.ActivityA");      

        startActivity(intent);
    }  

查看一下启动A之后的堆栈:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmlnY29udmllbmNl/font/5a6L5L

时间: 2024-10-19 05:20:20

AndroidManifest具体解释之Application(有图更好懂)的相关文章

AndroidManifest详解之Application(有图更好懂)

能够包含的标签: <activity> <activity-alias> <service> <receiver> <provider> <uses-library> 常用的属性: android:process 默认情况下,Android为每个应用程序创建一个单独的进程,所有组件运行在该进程中,这个默认进程的名字通常与该应用程序的包名相同.比如 <manifest xmlns:android="http://sche

怎么用XMind制作思维导图更美观

俗话说人靠衣装佛靠金装,思维导图同样也需要美装.我们可以对XMind思维导图进行美化,使得导图美观精致,从而吸引更多的注意力,刺激记忆点,加强印象,达到最佳的导图效果,本文就简述了怎样在XMind中对导图进行美化. 我们绘制好XMind思维导图后,前后顺序不论,我们可以从以下几点对思维导图进行美化: 主题形状及颜色 我们打开主题属性,选择主题外形,选中你想要的形状后,点击便可更改.在后方的色块中可以选择主题的填充颜色,系统是默认为无的. 线条形状及颜色 同样在主题属性中,选择边框,设置的是主题边

AndroidManifest.xml - 【 manifest -&gt; application】

语法: <application android:allowTaskReparenting=["true" | "false"] android:backupAgent="string" android:debuggable=["true" | "false"] android:description="string resource" android:enabled=["

AndroidManifest.xml中的application中的name属性

被这个不起眼的属性折磨了一天,终于解决了. 由于项目需要,要合并两个android应用,于是拷代码,拷布局文件,拷values,所有的都搞定之后程序还是频频崩溃,一直没有找到原因,学android时间也比较久了,但是清单文件中的application节点的name属性以前一直没有重视过,甚至没有用过这个属性. 由于整合后的程序频频崩溃,其他地方都没有问题,只有这个属性这里有区别,于是我就怀疑是这里的问题,上网一查,说,如果在application节点中指定了程序的name属性,那么代码中必须继承

AndroidManifest.xml - 【 manifest -&gt; Application -&gt; activity 】

<activity android:allowTaskReparenting=["true" | "false"] android:alwaysRetainTaskState=["true" | "false"] android:clearTaskOnLaunch=["true" | "false"] android:configChanges=["mcc",

MindManager15切分工具让你的思维导图更炫酷

MindManager是一款实用性软件,功能丰富且强大,仅分割工具就有三种,分别是界面切分.导图分支切分和导图内部切分.本教程主讲如何使用MindManager15中的导图内部切分工具. 界面切分是将导图分成水平.垂直两种界面,具体参考文章 如何使用MindManager15中文版中的水平垂直功能键. 导图分支切分是指将导图分支从原导图切分出带链接的新导图,具体参考文章如何使用MindManager15中文版的切分合并工具 导图内部切分是指将导图切分为多重主题或多重子主题,具体操作在高级里面的切

认真学过的文章再读第二遍一定会更快,更好懂,所有要保留

https://www.jianshu.com/p/91a2d0a1e45a MVC 设计概述 在早期 Java Web 的开发中,统一把显示层.控制层.数据层的操作全部交给 JSP 或者 JavaBean 来进行处理,我们称之为 Model1: 出现的弊端: JSP 和 Java Bean 之间严重耦合,Java 代码和 HTML 代码也耦合在了一起 要求开发者不仅要掌握 Java ,还要有高超的前端水平 前端和后端相互依赖,前端需要等待后端完成,后端也依赖前端完成,才能进行有效的测试 代码难

量化投资_关于Multicharts砖型图(传统砖型图和非传统砖型图)最详细的解释

1. Multicharts的图表中有砖型图的解释,参考官方论坛解释:https://forum.multicharts.cn/forum/cat/1/thread/2821?k=%E7%A0%96 2. 砖型图在交易中会非常棒的提升交易绩效,因为砖型图起到了降噪和二分的作用,降噪不用多解释,因为事先设定砖型图的波动单位,不符合这个单位的小波动就被过滤掉了:所谓二分就是在砖型图的世界中只有两种状态:涨和跌,因此对于绩效的提升非常棒. 3. 但是在Multicharts砖型图不能直接用于交易,这就

项目管理甘特图是什么?怎么做才能更高效?(EXCEL制作甘特图详细步骤)

项目管理甘特图是什么?甘特图即Gantt chart,又被称之为横道图.条状图.其命名是由提出者亨利·L·甘特(Henrry L.Ganntt)先生的名字而来的.甘特图是以图示的方式,并通过活动列表和时间刻度,来形象地表示出某些特定项目的活动顺序和持续时间. 关于项目管理甘特图是什么?怎么做才能更高效?(EXCEL制作甘特图详细步骤)可以加群647240543,自己去下载. 甘特图是项目管理中常用的一种图表,与平时常见的统计表格略有不同,它的内容更加复杂,绘制起来也更费力一些.管理项目不容易,可