前言:
学习Android也有一年多了,目前在从事Android开发的工作。不敢说精通,但也小有心得。相信很多android初学者和我刚开始接触android时一样,往往只了解某些知识点的表面,别人要是问点啥,还真就说不出个一二三来,往往处于“了解”阶段。所以,我打算将自己学习android的过程和经验总结整理一下,发表出来,希望对学习android的同学有所帮助,也算给自己的学习进行总结吧。生命不止,学习不止。一定要学会“享受”学习的过程,否则,学习起来就会很累。
在我的学习过程中,有一点经验和大家分享一下,那就是“Deep Learning”:深入学习。多花点时间深入学习,总比走马观花强得多。有的时候,我们不是学不会,而是学的太快了,忘得也快。倒不如一个知识点一个知识点的慢慢学,学懂,完全掌握。今天,就先说说Activity的生命周期吧,很多面试官都喜欢问这个问题。。。其实很简单,就是记住一些回调函数被触发的时机。
Activity这个类,定义了一些回调函数来控制它的生命周期。
- onCreate() —— 当Activity第一次创建的时候被调用。
- onStart() —— 当Activity对用户可见的时候被调用。
- onResume() —— 当Activity开始和用户交互的时候被调用。
- onPause() —— 正在运行的Activity马上要被暂停的时候被调用,此时,在这之前的Activity被重新获取。
- onStop() —— 当Activity不在对用户可见的时候被调用。
默认地,被创建的Activity中都包含一个onCreate()方法,通过这个方法,可以创建显示给用户的UI组件。
从“被创建”到“被销毁”的生命周期图示:
想要理解Activity生命周期的最好办法就是创建一个工程,并实现所有的回调函数,然后让Activity与用户交互。
1.创建一个名为Activity101的工程。
2.Activity101Activity.java中的代码。
- package net.horsttnann.Activity101;
-
- import android.app.Activity;
- import android.os.Bundle;
- import android.util.Log;
-
- public class Activity101Activity extends Activity {
- String tag = "Lifecycle";
-
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- Log.d(tag, "In the onCreate() event");
- }
-
- public void onStart() {
- super.onStart();
- Log.d(tag, "In the onStart() event");
- }
-
- public void onRestart() {
- super.onRestart();
- Log.d(tag, "In the onRestart() event");
- }
-
- public void onResume() {
- super.onResume();
- Log.d(tag, "In the onResume() event");
- }
-
- public void onPause() {
- super.onPause();
- Log.d(tag, "In the onPause() event");
- }
-
- public void onStop() {
- super.onStop();
- Log.d(tag, "In the onStop() event");
- }
-
- public void onDestroy() {
- super.onDestroy();
- Log.d(tag, "In the onDestroy() event");
- }
- }
3.按F11在模拟器上调试。
4.当这个activity第一次被加载:
- 03-23 01:54:32.602: D/Lifecycle(644): In the onCreate() event
- 03-23 01:54:32.602: D/Lifecycle(644): In the onStart() event
- 03-23 01:54:32.602: D/Lifecycle(644): In the onResume() event
5.按“返回键”,程序退出:
- 03-23 01:58:28.307: D/Lifecycle(644): In the onPause() event
- 03-23 01:58:28.762: D/Lifecycle(644): In the onStop() event
- 03-23 01:58:28.837: D/Lifecycle(644): In the onDestroy() event
6.重新进入程序:
- 03-23 01:59:38.282: D/Lifecycle(644): In the onCreate() event
- 03-23 01:59:38.292: D/Lifecycle(644): In the onStart() event
- 03-23 01:59:38.302: D/Lifecycle(644): In the onResume() event
7.按“拨号键”进入拨号界面,activity被转入后台运行:
- 03-23 02:00:23.252: D/Lifecycle(644): In the onPause() event
- 03-23 02:00:24.522: D/Lifecycle(644): In the onStop() event
8.注意,此时onDestroy()方法并没有被触发,说明这个activity还在内存中。按“返回键”,退出拨号界面,这个Activity又重新可见了。观察LogCat窗口中的输出:
- 03-23 02:03:25.262: D/Lifecycle(644): In the onRestart() event
- 03-23 02:03:25.262: D/Lifecycle(644): In the onStart() event
- 03-23 02:03:25.262: D/Lifecycle(644): In the onResume() event
onRestart()方法被触发了,接下来是onStart()和onResume()。
可以从这个简单的例子中看到,当点击“返回键”的时候,activity被销毁了,与此同时,activity当前的状态也将消失。有一点需要特别注意,onPause()方法仅在两种情况下被调用:一个是在Activity被转入后台运行的时候,一个是用户按“返回键”将activity销毁的时候。
当一个anctivity被启动之后,onStart()和onResume()方法总是要被调用的,无论这个activity是从后台重新获取的,还是首次被创建的。当一个anctivity第一次被创建的时候,onCreate()方法总是被调用。
从上面的例子,我们可以得出结论:
- 使用onCreate()方法去创建和初始化将要使用的组件。
- 使用onResume()方法去开启服务和执行代码。当Activity处于“前台”模式下,这些服务和代码需要被开启或执行。
- 使用onPause()方法去停止服务和阻断代码。当Activity处于“后台”模式下,这些服务和代码不需要被开启或执行。
-
使用onDestroy()方法去释放资源。
- 更多信息请查看 java进阶网 http://www.javady.com
分享到:
相关推荐
半导体设备系列专题报告之一:半导体设备详解——产业转移与国家力量赋能国产化加速推进.pdf
Android底层开发技术实战详解——内核、移植和驱动
深入理解Android(一):Gradle详解
资产管理三期系列详解之——数据治理篇.docx资产管理三期系列详解之——数据治理篇.docx资产管理三期系列详解之——数据治理篇.docx资产管理三期系列详解之——数据治理篇.docx资产管理三期系列详解之——数据治理篇...
赠送jar包:activemq-protobuf-1.1.jar; 赠送原API文档:activemq-protobuf-1.1-javadoc.jar; 赠送源代码:activemq-protobuf-1.1-sources.jar; 包含翻译后的API文档:activemq-protobuf-1.1-javadoc-API文档-...
详细描述 Android四大控件之一的Activity的生命周期,以及使用注意事项
Android系统原理与开发要点详解_培训课件下载。 Android系统原理与开发要点详解_培训课件下载。 Android系统原理与开发要点详解_培训课件下载。 Android系统原理与开发要点详解_培训课件下载。 Android系统原理与...
Android WebView详解和调用JS,androidrom开发书籍(csdn)————程序
源码 博文链接:https://104zz.iteye.com/blog/1685753
资源名称:Android游戏开发技术实战详解 内容简介:《Android游戏开发技术实战详解》详细讲解了Android游戏开发技术的基本知识。《Android游戏开发技术实战详解》内容新颖、知识全面、讲解详细,《Android游戏开发...
Android 生命周期详解,前台周期 全部周期 区分
金融行业研究方法-【银河证券朱人木、王红兵】银河金工fof专题之二——详解生命周期基金.pdf
《android网络开发与应用实战详解》一书源代码
ARM Cortex-M3嵌入式开发实例详解——基于NXP LPC17XX[张燕妮][程序源代码]
PHP漏洞挖掘(七):PHP框架开发详解——课程资源百度网盘下载,亲测真实有效可用!包含视频+课程资料.zip,在知识星球中也分享了该资源,知识星球:W小哥
详细介绍了android开发中的listview控件的使用
详尽解释 android 里的Activity的生命周期问题,攻克开发android程序中的难题