`
qcyycom
  • 浏览: 196209 次
社区版块
存档分类
最新评论

Android 程式开发:(一)详解Activity —— 1.1生命周期(前言)

阅读更多

 

前言:

    学习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中的代码。

[java] view plaincopy
  1. package net.horsttnann.Activity101;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.util.Log;  
  6.   
  7. public class Activity101Activity extends Activity {  
  8.     String tag = "Lifecycle";  
  9.   
  10.     /** Called when the activity is first created. */  
  11.     @Override  
  12.     public void onCreate(Bundle savedInstanceState) {  
  13.         super.onCreate(savedInstanceState);  
  14.         setContentView(R.layout.main);  
  15.         Log.d(tag, "In the onCreate() event");  
  16.     }  
  17.   
  18.     public void onStart() {  
  19.         super.onStart();  
  20.         Log.d(tag, "In the onStart() event");  
  21.     }  
  22.   
  23.     public void onRestart() {  
  24.         super.onRestart();  
  25.         Log.d(tag, "In the onRestart() event");  
  26.     }  
  27.   
  28.     public void onResume() {  
  29.         super.onResume();  
  30.         Log.d(tag, "In the onResume() event");  
  31.     }  
  32.   
  33.     public void onPause() {  
  34.         super.onPause();  
  35.         Log.d(tag, "In the onPause() event");  
  36.     }  
  37.   
  38.     public void onStop() {  
  39.         super.onStop();  
  40.         Log.d(tag, "In the onStop() event");  
  41.     }  
  42.   
  43.     public void onDestroy() {  
  44.         super.onDestroy();  
  45.         Log.d(tag, "In the onDestroy() event");  
  46.     }  
  47. }  

    3.按F11在模拟器上调试。

    4.当这个activity第一次被加载:

 

[plain] view plaincopy
  1. 03-23 01:54:32.602: D/Lifecycle(644): In the onCreate() event  
  2. 03-23 01:54:32.602: D/Lifecycle(644): In the onStart() event  
  3. 03-23 01:54:32.602: D/Lifecycle(644): In the onResume() event  

    5.按“返回键”,程序退出:

 

[plain] view plaincopy
  1. 03-23 01:58:28.307: D/Lifecycle(644): In the onPause() event  
  2. 03-23 01:58:28.762: D/Lifecycle(644): In the onStop() event  
  3. 03-23 01:58:28.837: D/Lifecycle(644): In the onDestroy() event  

 

    6.重新进入程序:

 

[plain] view plaincopy
  1. 03-23 01:59:38.282: D/Lifecycle(644): In the onCreate() event  
  2. 03-23 01:59:38.292: D/Lifecycle(644): In the onStart() event  
  3. 03-23 01:59:38.302: D/Lifecycle(644): In the onResume() event  

 

    7.按“拨号键”进入拨号界面,activity被转入后台运行:

 

[plain] view plaincopy
  1. 03-23 02:00:23.252: D/Lifecycle(644): In the onPause() event  
  2. 03-23 02:00:24.522: D/Lifecycle(644): In the onStop() event  

 

    8.注意,此时onDestroy()方法并没有被触发,说明这个activity还在内存中。按“返回键”,退出拨号界面,这个Activity又重新可见了。观察LogCat窗口中的输出:

 

[plain] view plaincopy
  1. 03-23 02:03:25.262: D/Lifecycle(644): In the onRestart() event  
  2. 03-23 02:03:25.262: D/Lifecycle(644): In the onStart() event  
  3. 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

    半导体设备系列专题报告之一:半导体设备详解——产业转移与国家力量赋能国产化加速推进.pdf

    android底层开发技术实战详解内核移植和驱动

    《Android底层开发技术实战详解:内核移植与驱动》是一本深入探讨Android系统底层开发的专著,旨在帮助读者理解并掌握Android系统的核心技术。本书着重讲解了Linux内核的基本原理,以及如何将Linux内核移植到Android...

    Activity生命周期详解

    ### Activity生命周期详解 #### 概述 Android应用开发中,`Activity`是四大基础组件之一,主要用于构建用户界面。理解`Activity`的生命周期对于管理应用的状态、资源以及响应用户交互至关重要。 #### `Activity`...

    Android底层开发技术实战详解——内核、移植和驱动

    《Android底层开发技术实战详解——内核、移植和驱动》这本书深入探讨了Android系统的底层机制,包括内核、系统移植以及设备驱动等关键领域。在Android操作系统中,这些部分是构建高效、稳定和功能丰富的应用的基础...

    android启动以及activity生命周期分析

    在Android开发过程中,理解应用程序如何启动及Activity的生命周期是非常重要的。这不仅有助于我们更好地管理程序的状态,还能帮助我们在遇到内存泄漏等问题时进行快速定位和解决。 #### ActivityThread `...

    Android 生命周期详解

    在Android开发中,Activity是应用程序的基本构建块,用于呈现用户界面和交互。了解Activity的生命周期对于创建健壮、高效的应用至关重要。Activity具有三个主要状态:运行(Running)、暂停(Paused)和停止...

    【Android开发】Activity生命周期与启动模式详解:页面跳转及Intent使用方法综述

    内容概要:本文详细介绍了Android中Activity的启动、结束、生命周期管理及其启动模式。首先讲解了Activity的基本操作如启动(StartActivity)和结束(Finish),然后深入探讨了Activity的七个生命周期方法(onCreate...

    资产管理三期系列详解之——数据治理篇.docx

    资产管理三期系列详解之——数据治理篇.docx资产管理三期系列详解之——数据治理篇.docx资产管理三期系列详解之——数据治理篇.docx资产管理三期系列详解之——数据治理篇.docx资产管理三期系列详解之——数据治理篇...

    详解教程Android开发中的Activity 组件

    ### 详解Android开发中的Activity组件 #### 概述 在Android开发中,`Activity`是四大组件之一,扮演着至关重要的角色。它负责提供用户界面并处理与用户的交互,每一个`Activity`通常对应一个屏幕。本文将深入探讨`...

    详解 Android 的 Activity 组件

    了解`Activity`的生命周期以及它在不同状态之间的转换机制对于开发高质量的Android应用程序至关重要。通过合理利用`Activity`生命周期回调方法,开发者可以确保应用程序在各种情况下都能提供良好的用户体验。此外,...

    Android底层开发技术实战详解 内核、移植和驱动

    《Android底层开发技术实战详解——内核、移植和驱动》这本书深入探讨了Android系统的核心技术,包括内核、系统的移植以及设备驱动程序的开发。在Android操作系统中,这些部分是构建强大、稳定且高效移动应用的基础...

    activemq-protobuf-1.1-API文档-中文版.zip

    赠送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生命周期详解

    Android中的Activity生命周期是每个Android开发者必须深入理解和掌握的关键概念。Activity是Android应用程序的基本构建块,它代表用户界面的一个屏幕。了解其生命周期对于优化应用性能、处理资源管理以及确保正确...

    Android开发手册——API函数详解

    ### Android开发手册——API函数详解 #### TextView的API详解 **1.1 结构** `TextView`是Android中用于展示文本的重要组件。它继承自`View`类,并且是`android.widget`包中的一个核心成员。`TextView`的类结构...

    android Activity详解(超详细)

    在Android中,Activity的生命周期由一系列回调方法组成,这些方法定义了Activity在其生命周期内各个阶段的行为。了解这些回调方法对于编写高效稳定的Android应用至关重要。 - **onCreate()**:这是Activity第一次...

    Android之Activity的生命周期和Activity间的跳转和数据传递)

    ### Android之Activity的生命周期与Activity间的跳转及数据传递 #### Activity的概念与作用 在Android应用开发中,`Activity`是四大组件之一,主要负责管理应用程序的用户界面(UI)。一个Activity代表一个屏幕上的...

    《Linux设备驱动开发详解——基于最新的Linux4.0内核》源码.zip

    《Linux设备驱动开发详解——基于最新的Linux4.0内核》是一本专注于嵌入式Linux系统中的设备驱动程序开发的专业书籍。这本书的核心内容是讲解如何为Linux操作系统编写和理解设备驱动,以实现硬件与操作系统之间的...

    《Android 3D游戏开发技术详解与典型案例》附源码

    《Android 3D游戏开发技术详解与典型案例》本书主要以Android平台下3D游戏的开发为主题,并结合真实的案例向读者详细介绍了OpenGL ES的基础知识及3D游戏程序开发的整个流程。 全书分为两篇共22章,第一篇以简单易懂...

    Android的Activity周期 Android的Activity周期 Android的Activity周期

    ### Android的Activity生命周期详解 #### 一、Activity生命周期概述 在Android开发中,理解Activity的生命周期至关重要。Activity是Android四大组件之一,它负责为用户提供一个可视化的交互界面。每个Activity都有...

Global site tag (gtag.js) - Google Analytics