基本都写了。写的都经过测试。不是按照官网一个字一个字的翻译。觉得通俗易懂 ,也可以配和官方文档理解。
元素:全部用小写。manifest 和application有且只有一个
同一级别的元素顺序无关 ,除了<activity-alias>必须在<activity>之后
属性:除了name属性 都是可选的。
<intent-filter>作用是一个筛选条件。。跳转到那个activity。。
<action/>
<category/>
<data/>
<intent-filter>
mainfest里面的所有activity都是在 用到的时候才会被实例化。不是上来就实例化的
activity属性 可以去developer.android.com查询
<activity android:allowEmbedded=["true" | "false"]
android:allowTaskReparenting=["true" | "false"]
允许进程重定向
比如 一个email(是进程1)打开一个浏览器 进入到网站当这个执行完之后
在在短信应用(是进程2)里面有一个按钮是打开浏览器 当再次打开这个浏览器的时候 如果是true 还打开刚才的网页 而不是主页
也就是说 一个应用可以属于不同的进程
android:alwaysRetainTaskState=["true" | "false"]允许保留任务状态
一般操作是 activity1跳转到activity2 然后按下home按键 如果30分钟内
没有操作过activity1 那么处于栈顶的activity2就会被清除 如果设置为true
那么过了30分钟再次打开这个应用 看到的界面还是activity2的界面。。适用于看网页啊等等
android:autoRemoveFromRecents=["true" | "false"] android:banner="drawable resource"
android:clearTaskOnLaunch=["true" | "false"]
如果activity1跳到activity2 按下home按键 然后再打开这个应用如果为 true activity2就被清除 只 显示activity1
就是重新调用的时候只显示栈顶
android:configChanges=["mcc", "mnc", "locale",
"touchscreen", "keyboard", "keyboardHidden", "navigation", "screenLayout", "fontScale", "uiMode","orientation", "screenSize", "smallestScreenSize"]
单独写一篇
android:documentLaunchMode=["intoExisting", "always", "none", "never"] android:enabled=["true" | "false"]android:excludeFromRecents=["true" | "false"]
最近的历史中不包含这个应用
在一个activity中 按下home键换到桌面,如果想再次执行这个activity方法两种
点击图标 或者 常按home键 在最近的历史中 打开应用 这个方法就是如果为true
在最近的历史中 没有这个activity的存在
android:exported=["true" | "false"]
是否这个组件 activity对其他进程有效
android:finishOnTaskLaunch=["true" | "false"]这个出行设置在activity2 里面
activity1跳到activity2 home键 到桌面 然后再点开这个应用
activity2 就被清理了。只显示activity1
activity1里面也设置 activity1测试的结果没有被清除依然还在,也没有报错
android:hardwareAccelerated=["true" | "false"]
android:icon="drawable resource"android:label="string resource"
android:launchMode=
["multiple" |
"singleTop" |
"singleTask" |
"singleInstance"
]得单独写一篇文章
android:maxRecents="integer"
android:multiprocess=["true" | "false"]
多进程 官网翻译如下
这个属性用于设置Activity的实例能否被加载到与启动它的那个组件所在的进程中,如果设置为true,则可以,否则不可以。默认值是false。
通常,一个新的Activity实例会被加载到定义它的应用程序的进程中,以便应用程序的所有Activity都运行在同一个进程中。但是,如果这个属性被设置为true,那么这个Activity的实例就可以运行在多个进程中,允许系统在使用它们的进程中来创建实例(权限许可的情况下),这几乎是从来都不需要的事情。但这最后一句让人蛋疼 ,几乎从来都不需要的事情 。。
android:name="string"android:noHistory=["true" | "false"]
从这个activity切出去的时候 把自己干掉 类似于finish()
android:parentActivityName="string" android:permission="string"android:process="string"
两种方法
1 android:process="wang.com.cn"这个给这个进程起了一个别名
如果两个应用的进程名字设置的一样 那么两个应用可以共享两个进程下面的属性
2 android:process=":remote"这个组件可能在另一个进程中使用
android:relinquishTaskIdentity=["true" | "false"]
android:screenOrientation=["unspecified" |默认值(常用)
"behind" |任务栈里面 他下面的那个activity的屏幕是什么样 他就是什么样
"landscape" |横屏
"portrait" |竖屏 "reverseLandscape" |
"reversePortrait" |
"sensorLandscape"
| "sensorPortrait"
|"userLandscape"
| "userPortrait"
|"sensor" 跟着感应器走 横屏 竖屏 随着感应器变化(常用)
| "fullSensor"
| "nosensor"
|"user"用户指定
|"fullUser"
| "locked"]
android:stateNotNeeded=["true" | "false"]
默认情况下,也就是咱们没有显示的设置这个属性的时候,这个值是false,默认是要保存状态的。当Activity在被意外杀死之前,系统会回调onSaveInstanceState()这个方法,程序员可以重载这个方法保存当前activity的一些状态到一个Bundle对象里。当这个Activity再重启的时候会通过onCreate()方法传递过来,那个参数Bundle对象就是意外杀死前保存的状态,可以利用保存在里面的值,恢复到意外杀死前的状态。注意一下,刚打开一个Activity时,onCreate()方法参数中的Bundle是null,做处理时要判断一下,是不是意外杀死之后的重启。
android:taskAffinity="string" android:theme="resource or theme" android:uiOptions=["none" | "splitActionBarWhenNarrow"]
正常情况下,默认值就ok了,但是有的场景需要设置为true,必须lancher程序,就是保证程序崩溃之后依然不会被系统移除,这句话是官方文档上说的,我的理解是,用来保证肯定能重启,并且还好保证重启的速度要快,因为不需要保存状态。android:windowSoftInputMode=[
"stateUnspecified",未指定
"stateUnchanged",
"stateHidden",
"stateAlwaysHidden",总是隐藏
"stateVisible",
"stateAlwaysVisible", 总是显示
"adjustUnspecified",
"adjustResize",
"adjustPan"]
软键盘输入
> . . .
. . . </activity>