AndroidManifest具体解释之Application(有图更好懂)
可以包括的标签:
- <activity>
- <activity-alias>
- <service>
- <receiver>
- <provider>
- <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" alt="">
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
AndroidManifest具体解释之Application(有图更好懂)的更多相关文章
- AndroidManifest.xml解释说明和android的启动过程
1.android清单文件:AndroidManifest.xml 说明如下: <?xml version="1.0" encoding="utf-8"? ...
- AndroidManifest.xml中的application中的name属性 分类: android 学习笔记 2015-07-17 16:51 116人阅读 评论(0) 收藏
被这个不起眼的属性折磨了一天,终于解决了. 由于项目需要,要合并两个android应用,于是拷代码,拷布局文件,拷values,所有的都搞定之后程序还是频频崩溃,一直没有找到原因,学android时间 ...
- AndroidManifest.xml中的application中的name属性
被这个不起眼的属性折磨了一天,终于解决了. 由于项目需要,要合并两个android应用,于是拷代码,拷布局文件,拷values,所有的都搞定之后程序还是频频崩溃,一直没有找到原因,学android时间 ...
- [android] AndroidManifest.xml - 【 manifest -> application】
语法: <application android:allowTaskReparenting=["true" | "false"] android:back ...
- 免费在线使用Ayoa:让思维导图更简单
在学习和工作中,我们都会遇到需要使用思维导图的情况,导图可以很好地帮助我们处理工作,完成记录和分享,是一个非常便捷的工具.今天小编就想和大家分享一款非常简单好用的思维导图软件,Ayoa. 之所以要将它 ...
- [android] AndroidManifest.xml - 【 manifest -> Application -> activity 】
<activity android:allowTaskReparenting=["true" | "false"] android:alwaysRetai ...
- 巧妙使用MindManager图像功能,能够让你的思维导图更精彩
MindManager是一款多功能思维导图工具软件,有其他软件无法媲美的项目管理和商业规划高级功能.用户们制作思维导图时一定要注意图文并茂,单纯的文字会过于单调.所以接下来,小编就为大家详细介绍Min ...
- 完爆Excel!一个令人惊艳的数据展示工具,让你做图更轻松高效
数据展示应该是最常见的需求,我们经常利用数据做总结.用数据做分享.但是我们该如何更好地展示给我们需要展示的人,如何才能让我们的数据表达更加动人,这个值得让人思索. 说到数据表达,常用的数据展示方式无非 ...
- Android,配置Activity为启动Activity(AndroidManifest.xml,application,intent-filter,MAIN,LAUNCHER)
备忘: 将Activity注册为启动Activity. 在AndroidManifest.xml中的<application>元素中加入以下<activity>子元素内容: & ...
随机推荐
- jquery validate用法总结
jquery validate是本人用过的最好用的验证组件,但其文档写的真是不敢恭维,现将一些常见用法总结如下(持续更新). 1. js触发表单验证 //触发整个表单的验证 $('form').val ...
- Django模板遍历字典的方法
使用Python + Django做Web开发时,有时需要在view中传递一个字典给模板(template),如何在模板中遍历字典呢? 下面介绍两种方法: views.py代码如下: dicts = ...
- spring boot-html和templates
静态页面 spring boot项目只有src目录,没有webapp目录,会将静态访问(html/图片等)映射到其自动配置的静态目录,如下 /static /public /resources / ...
- 学习javascript设计模式之发布-订阅(观察者)模式
1.发布-订阅模式又叫观察者模式,它定义对象之间一种一对多的依赖关系. 2.如何实现发布-订阅模式 2-1.首先指定好发布者 2-2.给发布者添加一个缓冲列表,用户存放回调函数以便通知订阅者 2-3. ...
- 【Visual Studio】error C2220: 警告被视为错误 - 没有生成“object”文件 (转)
原文转自 http://www.cnblogs.com/kex1n/archive/2011/10/19/2217266.html [错误原因] 该文件的代码页为英文,而我们系统中的代码页为中文. [ ...
- size_t、ptrdiff_t【转】
转自:http://www.cnblogs.com/liulipeng/archive/2012/10/08/2715246.html http://longzxr.blog.sohu.com/196 ...
- 标准C程序设计七---105
Linux应用 编程深入 语言编程 标准C程序设计七---经典C11程序设计 以下内容为阅读: <标准C程序设计>(第7版) 作者 ...
- 33深入理解C指针之---通过字符串传递数据
一.传递字符串:在函数的参数列表中,将参数声明为char指针即可实现通过字符串传递参数 1.特征: 1).字符串以char指针的形式传递,一般是const指针传递: 2).使用字符数组声明字符串,调用 ...
- Android添加永不休眠选项
很多朋友在使用TQ210做项目的时候都需要屏幕保持长亮,本文介绍如何修改TQ210 android源码,使系统可以永不休眠,代码如下: 1.添加英文选项 修改packages/apps/Setting ...
- iOS11及Xcode9适配问题汇总
UIScrollView and UITableView的新特性 ScrollView 如果有一些文本位于UI滚动视图的内部,并包含在导航控制器中,现在一般navigationContollers会传 ...