Activity相关

Activity启动模式

(1)standard:标准模式 每次启动一个Activity都会重新创建新的实例,不管这个实例是否已经存在。在这种模式下,谁启动了这个Activity,这个Activity就会运行在启动它的那个Activity所在的栈中(前一个activity模式是singleInstance除外)。

*注意事项*

当我们用非Activity类型的Context(A)去启动标准模式的Activity(B)时,需要为B指定FLAG_ACTIVITY_NEW_TASK标记为,这是因为A并没有所谓的任务栈。这样启动的Activity是以singleTask模式启动的。

(2)singleTop:栈顶复用模式。如果新Activity位于栈顶,那么不会被重新创建,同时会回调onNewIntent方法。

(3)singleTask:栈内复用模式。Activity只要在栈中存在,就不会重新创建实例,并回调onNewIntent方法。此模式默认具有clearTop效果。

(4)singleInstance:单实例模式。这是一种加强的singleTask模式,具有singleTask的所有特性。只能单独位于一个任务栈中。

TaskAffinity 这个参数标识了一个Activity所需要的任务栈的名字,默认为应用包名。TaskAffinity属性主要singleTask启动模式或者allowTaskReparenting属性配对使用。其他情况下没有意义。

指定启动模式有两种方式,1 在AndroidMenifest中直接指定2通过代码设置(intent.addFlags())。这两种方式区别是,第二种优先级更高一些,当两种方式都存在时,以第二种方式为准;限定范围不同:第一种无法直接为Activity设置FLAG_ACTIVITY_CLEAR_TOP标识,第二种方式无法为Activity指定singleInstance模式。

Activity的Flags

FLAG_ACTIVITY_CLEAR_TOP

具有此标记的activity,当它启动时,在同一个任务栈中所有位于它上面的activity都要出栈,一般要和FLAG_ACTIVITY_NEW_TASK配合使用。如果要启动的activity采用standard模式,那么它连同它之上的activity都要出栈,系统会放入新的activity实例并放入栈顶。

FLAG_ACTIVITY_NEW_TASK

为Activity指定“singleTask”启动模式

FLAG_ACTIVITY_NEW_TOP

为Activity指定“singleTop”启动模式

旋转屏幕时Activity不重新创建的方法

1.如果minSdkVersion和targetSdkVersion有一个大于13,需要如下配置:

android:configChanges="orientation|screenSize"

2.直接配置横屏或者竖屏

android:screenOrientation="portrait"

Activity数据保存

Activity异常情况下被终止,系统会调用onSaveInstanceState保存当前activity的状态,这个方法的调用是在onStop之前,可能在onPause之前,也可能在onPause之后。恢复数据是在onRestoreInstanceState方法,这个方法的调用是在onStart之后。view自身会保存数据状态,但是要确保每个view的id是唯一的。

IntentFilter匹配规则

action:Intent中的action能够和过滤规则中的任何一个action相同即可匹配成功。

category:Intent可以没有category(会默认为Intent加上android.intent.category.DEFAULT),如果一旦有,每个category都要和过滤规则中的任何一个category相同。

读书笔记《Android开发艺术探索》

时间: 2024-10-09 23:26:44

Activity相关的相关文章

Activity相关内容总结

/*---------------------------------------- *-描述--Activity相关内容总结. *-描述--S1.Activity的7个生命周期 * ☆☆☆☆☆单独活动生命周期: * 1.Activity创建的时候:onCreate() => onStart() => onResume() * 2.按下home键或进入其他活动(失去焦点):onPause() => onStop() * 3.再进入(重获取焦点):onRestart() => onS

Task和Activity相关

这段时间在做一个项目,发现对Task和Activity掌握的还是不牢固.把相关知识整理在这里,方便查阅,有几个Flag没看明白啥意思,也没测试出来效果如何... android:allowTaskReparenting    用来标记Activity能否从启动的Task移动到有着affinity的Task(当这个Task进入到前台时)——“true”,表示能移动,“false”,表示它必须呆在启动时呆在的那个Task里.    如果这个特性没有被设定,设定到<application>元素上的a

阿里Andorid研发一面:小姑娘挺不错来给我先讲讲Fragment和Activity相关吧

之前在github上更新了些关于面试类的文章,含有从基础到进阶.含有BATJ.字节跳动面试专题,算法专题,高端技术专题,混合开发专题,java面试专题,Android,Java小知识,到性能优化.线程.View.OpenCV.NDK等应有尽有.还有辅之相关的视频+学习笔记 https://github.com/xiangjiana/androids好久没更新了,公司电脑太卡了o(╥﹏╥)o.(把所以的知识+每日一题整理成了份983页的PDF)(更多完整项目下载.未完待续.源码.图文知识后续上传g

android内存优化-Activity, Thread引起的内存泄露0

Android编程中一个共同的困难就是协调Activity的生命周期和长时间运行的任务(task),并且要避免可能的内存泄露.思考下面Activity的代码,在它启动的时候开启一个线程并循环执行任务. 1 /** 2 * 一个展示线程如何在配置变化中存活下来的例子(配置变化会导致创 3 * 建线程的Activity被销毁).代码中的Activity泄露了,因为线程被实 4 * 例为一个匿名类实例,它隐式地持有外部Activity实例,因此阻止Activity 5 * 被回收. 6 */ 7 pu

android Application Component研究之Activity(一)

http://blog.csdn.net/windskier/article/details/7096521 终于下定决心写写ActivityManagerService的源码分析的文章了,ActivityManagerService 业务的整个逻辑关系被各种复杂的数据结构包裹着,因此对ActivityManagerService 的分析主要就是对各种数据结构的分析,明白了这些数据结构,理解ActivityManagerService的业务内容就水到渠成了. AMS提供了一个ArrayList

Android 四大组件------Activity

一.定义软件打开的主activity 当用户点开软件时,系统会默认调用app中声明为"launch"(或者"main")的activity中的onCreate()方法.我们一般在AndroidManifest.xml中定义主activity. <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-fil

Android处理运行时变更保存数据状态恢复Activity

一.概述 运行时变更就是设备在运行时发生变化(例如屏幕旋转.键盘可用性及语言).发生这些变化,Android会重启Activity,这时就需要保存activity的状态及与activity相关的任务,以便恢复activity的状态. 为此,google提供了三种解决方案: 对于少量数据: 通过onSaveInstanceState(),保存有关应用状态的数据. 然后在 onCreate() 或 onRestoreInstanceState() 期间恢复 Activity 状态. 对于大量数据:用

Activity的小应用

本次小应用是密码输入Activity. 应用打开呈现出两个输入框,分别为新密码输入框和确认密码输入框. 输入框下方有两个按钮: – OK 按钮点击后: * 若 New Password 为空,则发出 Toast 提 . * 若 New Password 与 Confirm Password 不匹配,则发出 Toast 提示. – CLEAR 按钮点击后: 清除两输入框的内容. 密码登录界面的布局,将其设为 LinearLayout,对应注册密码的布局.因为将这个布局 Layout 设为竖直方向排

精通Activity

在平时开发中,Activity我们每个人应用的都滚瓜烂熟,回忆起来没有太难的地方,但是我们学习知识不应该只知其一不知其二,这样才能在学习的道理上越走越远,今天我要给大家分享的内容会让大家明白一些Android内部的实现机制以及Activity在整个FrameWork层是如何交互处理的和FrameWork层是如何管理Activity的生命周期的.学习之前建议大家把FrameWork的源码下载下来,下载地址:https://github.com/android/platform_frameworks