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>子元素内容: & ...
随机推荐
- How to use MJRefresh
Installation with CocoaPods:pod 'MJRefresh' Manual import: Drag All files in the MJRefresh folder to ...
- no main manifest attribute, in demo-1.0.jar
今天想打包一个jar到Linux上运行,发现使用java -jar demo-1.0.jar 运行报错: no main manifest attribute, in demo-1.0.jar 解决方 ...
- 【bzoj3098】Hash Killer II 生日悖论
这天天气不错,hzhwcmhf神犇给VFleaKing出了一道题:给你一个长度为N的字符串S,求有多少个不同的长度为L的子串.子串的定义是S[l].S[l + 1].… S[r]这样连续的一段.两个字 ...
- bzoj 3625小朋友和二叉树 多项式求逆+多项式开根 好题
题目大意 给定n种权值 给定m \(F_i表示权值和为i的二叉树个数\) 求\(F_1,F_2...F_m\) 分析 安利博客 \(F_d=F_L*F_R*C_{mid},L+mid+R=d\) \( ...
- 关于PHP xss 和 SQL 注入的问题
漏洞无非这么几类,XSS.sql注入.命令执行.上传漏洞.本地包含.远程包含.权限绕过.信息泄露.cookie伪造.CSRF(跨站请求)等.这些漏洞不仅仅是针对PHP语言的,PHP如何有效防止这些漏洞 ...
- TSP 旅行商问题(状态压缩dp)
题意:有n个城市,有p条单向路径,连通n个城市,旅行商从0城市开始旅行,那么旅行完所有城市再次回到城市0至少需要旅行多长的路程. 思路:n较小的情况下可以使用状态压缩dp,设集合S代表还未经过的城市的 ...
- Docker 架构详解
Docker 的核心组件包括: Docker 客户端 - Client Docker 服务器 - Docker daemon Docker 镜像 - Image Registry Docker 容器 ...
- SharePoint 2013 App 开发—Auto Hosted 方式
Auto Hosted 方式,自动使用Windows Azure来作为host,这种模式将App 发布到Office 365上的SharePoint Developer Site上.这种方式可以不用花 ...
- 学习javascript设计模式之发布-订阅(观察者)模式
1.发布-订阅模式又叫观察者模式,它定义对象之间一种一对多的依赖关系. 2.如何实现发布-订阅模式 2-1.首先指定好发布者 2-2.给发布者添加一个缓冲列表,用户存放回调函数以便通知订阅者 2-3. ...
- 06深入理解C指针之---指针操作和比较
该系列文章源于<深入理解C指针>的阅读与理解,由于本人的见识和知识的欠缺可能有误,还望大家批评指教. 指针作为一种特殊类型的变量,必须遵守C语言中变量先声明后使用的原则.本节内容中指针的操 ...