Activity基本介绍
来源:互联网 发布:vmware esxi mac os 编辑:程序博客网 时间:2024/06/07 02:56
Android各种基本知识笔记-Activity
Activity生命周期
onCreate():
活动第一次被创建的时候调用,在这里我们应该完成那些刚启动活动就必须完成的初始化操作,比如说加载布局、绑定各种事件等等。
onStart():
在活动由不可见变为可见的时候调用。
onResume():
在活动准备好和用户进行交互的时候调用,这时的活动一定位于返回栈的栈顶,并且处于运行状态。
onPause():
在系统准备去启动或回复另一个活动的时候调用,这里通常会将一些消耗CPU的资源释放掉,还有保存一些关键数据,但是这个方法的执行速度一定要快,不然会影响到新的栈顶活动的使用,也就是说在这里不能进行什么耗时的操作。
onStop():
在活动完全看不到的时候调用。
onDestory():
在销毁活动的时候调用。
onRestart():
在活动由停止状态变为运行状态之前(即重启活动)调用。
Activity启动模式
设置Activity的启动模式,只需要在AndroidManifest.xml里对应的< activity>标签设置android:launchMode属性
例如
<activity android:name=".MainActivity"android:launchMode="standard" />
standard
这是默认模式,可以不用写配置。在这个模式下,都会默认创建一个新的实例。因此,在这种模式下,可以有多个相同的实例,也允许多个相同Activity叠加。
例如:
我有一个Activity名为A1,注册一个按钮可跳转到A1(即自己)。那么如果我点击按钮,便会新启一个Activity A1叠在刚才的A1之上,再点击,又会再新启一个在它之上。点back键会依照栈顺序依次退出,但之前开了几个Activity就必须退出多少次才能完全退出。singleTop
如果某个Activity自己激活自己,那么任务栈栈顶就是该Activity,则不需要创建,其余情况都要创建Activity实例
例如:
我有两个Activity名为B1,B2,两个Activity内容功能完全相同,其页面上都有两个按钮可以跳到B1或者B2,唯一不同的是B1为standard,B2为singleTop。
若我意图打开的顺序为B1->B2->B2,则实际打开的顺序为B1->B2(后一次意图打开B2,实际只调用了前一个的onNewIntent方法)
若我意图打开的顺序为B1->B2->B1->B2,则实际打开的顺序与意图的一致,为B1->B2->B1->B2singleTask
如果要激活的那个Activity在任务栈中存在该实例,则不需要创建,只需要把此Activity放入栈顶,并把该Activity以上的Activity实例都pop出来
例如:
创建了三个Activity C1、C2、C3,其中C1是singleTask模式,那么如下启动顺序的结果为:
- singleInstance
这种启动模式比较特殊,因为它会启用一个新的栈结构,将Acitvity放置于这个新的栈结构中,并保证不再有其他Activity实例进入。
其实这样做的意义在于:当程序中有一个活动是允许其他程序调用的,如果我们想实现其他程序和我们的程序可以共享这个活动的实例,因为每个应用程序都会有自己的返回栈,同一个活动在不同的返回栈中入栈时必然是创建了新的实例,所以使用前三种启动模式肯定完成不了这个任务。而使用singleInstance模式,它这种模式下面会有一个单独的返回栈来管理这个活动,不管哪个程序访问这个活动都只能公用同一个返回栈,这也就解决了共享活动实例的问题了。
例如:
程序有三个ActivityD1,D2,D3,三个Activity可互相启动,其中D2为singleInstance模式。那么程序从D1开始运行,假设D1的taskId为1,那么从D1启动D2时,D2会新启动一个task,即D2与D1不在一个task中运行。假设D2的taskId为2,再从D2启动D3时,D3的taskId为1,也就是说它被压到了D1启动的任务栈中。
若是在别的应用程序打开D2,假设Other的taskId为1,打开D2,D2会新建一个task运行,假设它的taskId为2,那么如果这时再从D2启动D1或者D3,则又会再创建一个task,因此,若操作步骤为other->D2->D1,这过程就涉及到了3个task了。
- Activity基本介绍
- activity的基本介绍(转)
- Android组件基本介绍之Activity
- 四大组件基本用法与介绍(1)--activity
- Android-Activity的基本介绍和页面之间数据传递
- Activity介绍
- Activity介绍
- Activity介绍
- Activity,详细介绍Activity
- 什么是Activity,详细介绍Activity
- 14 - Activity基本应用
- Activity的基本用法
- Activity基本详讲
- Activity基本用法
- Android基本组件-Activity
- Activity的基本用法
- Activity四大基本状态
- Activity的基本用法
- Filter体现职责链模式
- memcache搜索分页
- Codeforces Round #324 (Div. 2) (B排列组合)(C贪心)(D哥德巴赫猜想 数论+暴力)
- Spring BeanNameAutoProxyCreator 与 ProxyFactoryBean区别
- 下拉加载数据 模拟 小实例
- Activity基本介绍
- Table表格
- TabLayout的使用
- Android SlidingMenu 使用详解
- 逆序输出字符串
- Binary Tree Zigzag Level Order Traversal
- jenkins通过svn发布maven项目
- Java 递归求斐波那契数,输入n,查询第n个数
- 你必须要看的IT培训机构选择意见