第一行代码 学习笔记 活动
2018-04-07 16:41
197 查看
1.onCreate() 在活动第一次创建的时候调用,可以在此活动中完成初始化操作,比如加载布局,绑定事件等
2.onSrart() 在活动有不可见变为可见的时候调用
3.onResume() 在活动准备和用户进行交互的时候调用。此时的活动一定位于返回栈的栈顶,并且处于运行状态
4.onPause() 在系统准备启动或者恢复另一个活动的时候调用。我们通常会在这个方法中将一些消耗CPU的资源释放掉,以及保存一些关键的数据,但这个方法的执行速度一定要快,不然会影响到新的栈顶活动的使用
5.onStop()这个方法在活动完全不可见的时候调用。
6.onDestroy() 这个方法会在活动被销毁之前调用,之后活动状态变为销毁状态
7.onRestart() 这个方法在活动由停止状态变为运行状态之前调用
android:theme 让dialogActivity使用对话框式的主题。
活动被会收后的数据保存
使用onSaveInstanceState()回调方法 这个方法可以保证在活动被会收之前一定会被调用,因此可以用此方法来解决活动被回收时临时数据得不到保存的问题
onSaveInstanceState()方法会携带一个Bundle类型的参数,Bundle提供了一系列的方法用于保存数据,如putString(),putInt()等,每个方法需要传入两个数据,第一个是键,用于后面从Bundle中取值,第二个参数是真正要保存的内容
恢复数据直接在onCreate()中,onCreate()中也有个Bundle类型的参数。这个参数一般情况下都为Null,但是如果活动被系统回收之前有通过onSaveInstanceState()方法来保存数据的话,这个参数就会带有之前所保存的数据,我们只需要取出来就可以了。 (只限于当前这个活动,如果再打开一个相同的活动,数据不会在新开的活动中出现)
活动的启动模式
可以在<activity>标签指定android:launchMode属性来选择启动模式
standard 默认启动模式 每当启动一个新的活动,它就会在返回栈中入栈,并处于栈顶的位置
singleTop 在启动活动时如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它,不会再创建新的活动
singleTask 每次启动该活动时系统首先会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并把在这个活动之上的所有活动统统出栈,如果没有发现就会创建一个新的活动实例
singleInstance 指定为singleInstance模式的活动会启用一个新的返回栈来管理这个活动(其实如果singleTask模式指定了不同的taskAffinity,也会启动一个新的返回栈)想象一下,假设我们的程序有一个活动时允许其他程序调用的,如果我们想实现其他程序和我们的程序来共享这个活动的实例,应该如何实现呢? 上面三种肯定是实现不了的,而使用singleInstance模式可以,这种模式下会有一个单独的返回栈来管理这个活动,不管哪个应用程序来访问这个过的,都共用的同一个返回栈
2.onSrart() 在活动有不可见变为可见的时候调用
3.onResume() 在活动准备和用户进行交互的时候调用。此时的活动一定位于返回栈的栈顶,并且处于运行状态
4.onPause() 在系统准备启动或者恢复另一个活动的时候调用。我们通常会在这个方法中将一些消耗CPU的资源释放掉,以及保存一些关键的数据,但这个方法的执行速度一定要快,不然会影响到新的栈顶活动的使用
5.onStop()这个方法在活动完全不可见的时候调用。
6.onDestroy() 这个方法会在活动被销毁之前调用,之后活动状态变为销毁状态
7.onRestart() 这个方法在活动由停止状态变为运行状态之前调用
android:theme 让dialogActivity使用对话框式的主题。
活动被会收后的数据保存
使用onSaveInstanceState()回调方法 这个方法可以保证在活动被会收之前一定会被调用,因此可以用此方法来解决活动被回收时临时数据得不到保存的问题
onSaveInstanceState()方法会携带一个Bundle类型的参数,Bundle提供了一系列的方法用于保存数据,如putString(),putInt()等,每个方法需要传入两个数据,第一个是键,用于后面从Bundle中取值,第二个参数是真正要保存的内容
恢复数据直接在onCreate()中,onCreate()中也有个Bundle类型的参数。这个参数一般情况下都为Null,但是如果活动被系统回收之前有通过onSaveInstanceState()方法来保存数据的话,这个参数就会带有之前所保存的数据,我们只需要取出来就可以了。 (只限于当前这个活动,如果再打开一个相同的活动,数据不会在新开的活动中出现)
活动的启动模式
可以在<activity>标签指定android:launchMode属性来选择启动模式
standard 默认启动模式 每当启动一个新的活动,它就会在返回栈中入栈,并处于栈顶的位置
singleTop 在启动活动时如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它,不会再创建新的活动
singleTask 每次启动该活动时系统首先会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并把在这个活动之上的所有活动统统出栈,如果没有发现就会创建一个新的活动实例
singleInstance 指定为singleInstance模式的活动会启用一个新的返回栈来管理这个活动(其实如果singleTask模式指定了不同的taskAffinity,也会启动一个新的返回栈)想象一下,假设我们的程序有一个活动时允许其他程序调用的,如果我们想实现其他程序和我们的程序来共享这个活动的实例,应该如何实现呢? 上面三种肯定是实现不了的,而使用singleInstance模式可以,这种模式下会有一个单独的返回栈来管理这个活动,不管哪个应用程序来访问这个过的,都共用的同一个返回栈
相关文章推荐
- 第一行代码学习笔记-第二章 探究活动-3.活动的生命周期
- 第一行代码学习笔记-第二章 探究活动-5. 活动的最佳实现
- 第一行代码学习笔记-第二章 探究活动-4.活动的启动模式
- 第一行代码学习笔记——活动的生命周期(四)
- 第一行代码学习笔记第二章——探究活动
- 第一行代码学习笔记——活动 Activity(二)
- 第一行代码学习笔记-第二章 探究活动-1.活动的基本用法
- Android第一行代码学习笔记二----活动
- 第一行代码学习笔记-第二章 探究活动-2.Intent的使用
- 第一行代码学习笔记---学习任务清单与列表
- CoolWeather天气个人学习笔记1(第一行代码实战)
- Android第一行代码学习笔记六----手机多媒体
- Android--第一行代码笔记 活动生命周期
- 第一行代码 广播机制Broadcast Receiver 学习笔记
- 第一行代码学习笔记---写在前面的话
- Android第一行代码学习笔记四----数据存储
- 第一行代码学习笔记---过时的通知写法
- Android第一行代码学习笔记八----网络技术
- 第一行代码学习笔记,第七章 内容提供者
- Android系统架构(Android第一行代码学习笔记1)