Android Activity初学,经验分享与基础知识,
2017-02-20 15:37
190 查看
粗略的讲一讲什么是Activity,在我理解,就是呈现给用户的每一个界面都是Activity,其主要用于与用户进行交互,自己的应用也是通过Activity给予用户最直观的体验。
1.什么是返回栈:
返回栈就是一个用于存储Activity的栈,每当你启动一个新的Activity的时候,旧的Activity就会被覆盖,然后你按下Back键的时候,旧的Activity又会弹出来,这就是一个栈的原理,新的Activity位于栈顶,旧的就在栈顶下。以此类推,每当你创建一个新的Activity的时候,就会入栈,Back或者Finish一个Activity的时候,就会弹栈。
![](https://img-blog.csdn.net/20170220151556176?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzQ0MTQwMDU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
2.Activity的活动状态:
(1):运行状态
当一个活动位于返回栈顶位置时候,这时候这个活动就处于运行状态。(2):暂停状态:
当一个活动不在处于返回栈顶时,但仍然可见,没有被完全覆盖,那么这个活动就进入了暂停状态。当内存极低的情况下,可能会被回收。
(3):停止状态:
当一个活动不处于栈顶,切完全不可见的时候就会处于停止状态,系统虽然会保存当前的数据和成员变量。但是当内存在别的地方被需要的时候,会回收停止状态活动。当前数据和成员变量也会被清除。
(4):销毁状态:
当一个活动从返回栈被清除的时候就会成为销毁状态,系统会最倾向于回收这类活动来保存手机内存充足。
3.活动的生存期:
onCreate:当活动第一次被创建的时候调用
onStart:当活动由不可见变为可见的时候调用
onResume:当活动准备好和用户交互的时候调用,此时活动一定会处于栈顶。
onPasue:当系统准备去启动或者回复另一个活动的时候调用.
onStop:当活动完全不可见的时候调用
onDestory:当活动被摧毁前调用
onRestrat:当活动由停止变为运行的时候调用。
完整周期:活动在onCreate和onDestory()方法之间经历的就是完整周期。
可见生存周期:活动在onStart()和onStop()之间经历的就是可见生存期.
前台生存周期:onResum()和onPause()之间经历的就是前台生存周期。
如图所示,官方的Activity的生命周期图示:
![](https://img-blog.csdn.net/20170220152812715?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzQ0MTQwMDU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
4.活动被回收了,数据需要保存怎么办?
前面说了,如果活动是Stop状态,可能也会被系统回收,那么我们所需要的数据也可能被清除,那么如何进行保存呢,这里我们就可以用到
onSaveInStanceState()
这个方法会携带一个Bundle来存储我们需要保存的数据。
这样当这个活动被回收以后,再次启动这个活动执行onCreate方法的时候进行判断就可以了。
这样就可以得到我们之前所需要的数据了,方法我只是简写了一下。
这也是我学习Activity的过程记录,有很多不完善的地方或者缺点请大神多多包涵,我只是为了记录一下自己的学习过程。
1.什么是返回栈:
返回栈就是一个用于存储Activity的栈,每当你启动一个新的Activity的时候,旧的Activity就会被覆盖,然后你按下Back键的时候,旧的Activity又会弹出来,这就是一个栈的原理,新的Activity位于栈顶,旧的就在栈顶下。以此类推,每当你创建一个新的Activity的时候,就会入栈,Back或者Finish一个Activity的时候,就会弹栈。
2.Activity的活动状态:
(1):运行状态
当一个活动位于返回栈顶位置时候,这时候这个活动就处于运行状态。(2):暂停状态:
当一个活动不在处于返回栈顶时,但仍然可见,没有被完全覆盖,那么这个活动就进入了暂停状态。当内存极低的情况下,可能会被回收。
(3):停止状态:
当一个活动不处于栈顶,切完全不可见的时候就会处于停止状态,系统虽然会保存当前的数据和成员变量。但是当内存在别的地方被需要的时候,会回收停止状态活动。当前数据和成员变量也会被清除。
(4):销毁状态:
当一个活动从返回栈被清除的时候就会成为销毁状态,系统会最倾向于回收这类活动来保存手机内存充足。
3.活动的生存期:
onCreate:当活动第一次被创建的时候调用
onStart:当活动由不可见变为可见的时候调用
onResume:当活动准备好和用户交互的时候调用,此时活动一定会处于栈顶。
onPasue:当系统准备去启动或者回复另一个活动的时候调用.
onStop:当活动完全不可见的时候调用
onDestory:当活动被摧毁前调用
onRestrat:当活动由停止变为运行的时候调用。
完整周期:活动在onCreate和onDestory()方法之间经历的就是完整周期。
可见生存周期:活动在onStart()和onStop()之间经历的就是可见生存期.
前台生存周期:onResum()和onPause()之间经历的就是前台生存周期。
如图所示,官方的Activity的生命周期图示:
4.活动被回收了,数据需要保存怎么办?
前面说了,如果活动是Stop状态,可能也会被系统回收,那么我们所需要的数据也可能被清除,那么如何进行保存呢,这里我们就可以用到
onSaveInStanceState()
这个方法会携带一个Bundle来存储我们需要保存的数据。
public void onSaveInStanceState(Bundle bundle){ super... String str = "Save it"; bundle.puString("data_key",str); }
这样当这个活动被回收以后,再次启动这个活动执行onCreate方法的时候进行判断就可以了。
public void onCreate(Bundle save...){ supre.... setCon... if(save..!=null){ String tempData = save... .getString("data_key"); } }
这样就可以得到我们之前所需要的数据了,方法我只是简写了一下。
这也是我学习Activity的过程记录,有很多不完善的地方或者缺点请大神多多包涵,我只是为了记录一下自己的学习过程。
相关文章推荐
- JAVA基础知识精华总结分享
- 开发经验小结(网络编程(1))---基础小知识
- jquery的基础知识初学总结
- 利用博客与视频分享和交流知识和经验
- Socket基础知识分享
- JAVA基础知识精华总结分享
- 新手学习PHP的一些基础知识分享
- 经验分享(六)一个程序员给初学编程人的建议!绝对的好!!
- 博弈论的一些基础知识(参考网络资料,学习总结,很好,分享并保存)
- 脱壳经验谈之二-----基础知识进阶
- 初学C++基础知识
- 【转】Socket基础知识分享
- 新手学习PHP的一些基础知识分享
- 存储基础知识(一个老菜鸟的经验)
- 初学 -- sql几点基础知识
- 表、字段命名的经验分享,这直接关系到整个系统的基础、公司规范、团队沟通协调、开发效率等方面
- 关于单片机的C语言编程基础知识(初学注意)
- 表、字段命名的经验分享,这直接关系到整个系统的基础、公司规范、团队沟通协调、开发效率等方面
- VTK经验分享 3. VTK的基础概念