第一个Android程序和Activity生命周期

实验目的

生成运行第一个Android程序,熟悉了解Android手机开发平台的基本构成和使用方法,熟悉Android应用程序项目的基本文件目录结构,了解开发环境提供的各种工具的基本用法。

在Activity中重载下9种事件函数,在调用不同函数时使用LogCat在Eclipse的控制台中输出调用日志。掌握Activity在启动、停止和销毁等不同阶段,9种重载函数的调用顺序,并掌握Android调试工具LogCat的使用方法

实验要求

  1. 用工程向导生成第一个Android程序,并在模拟器上运行

    注意在新建应用的选择SDK版本时选API 18

  2. 熟悉Android应用程序的基本文件结构

  3. 了解使用开发环境各种工具的基本用法

  4. 在程序中增加生命周期函数,并输出log,可以参考课本的示例程序,根据logcat的输出结果,分析程序的运行流程。注意分析以下几种情况:

    • 程序正常启动和关闭
    • 程序运行中,切换到其他程序
    • 程序运行中,有短信和电话呼入

实验过程

实例程序如下:

package com.example.administrator.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log; public class MainActivity extends AppCompatActivity {
private static String Tag="LIFECYCLE";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i(Tag,"Create");
} @Override
protected void onStart() {
super.onStart();
Log.i(Tag,"Start");
} @Override
protected void onStop() {
super.onStop();
Log.i(Tag,"Stop");
} @Override
protected void onPause() {
super.onPause();
Log.i(Tag,"Pause");
} @Override
protected void onResume() {
super.onResume();
Log.i(Tag,"Resume");
} @Override
protected void onDestroy() {
super.onDestroy();
Log.i(Tag,"Destroy");
} @Override
protected void onRestart() {
super.onRestart();
Log.i(Tag,"Restart");
}
}

1. 程序正常启动与关闭

1.1 程序启动:

1.2 程序正常关闭:

1.3 日志文件:

log1

12-31 19:27:49.400 20642-20642/com.example.administrator.myapplication I/LIFECYCLE: Create
12-31 19:27:49.400 20642-20642/com.example.administrator.myapplication I/LIFECYCLE: Start
12-31 19:27:49.420 20642-20642/com.example.administrator.myapplication I/LIFECYCLE: Resume

log2

12-31 19:34:02.260 25304-25304/com.example.administrator.myapplication I/LIFECYCLE: Create
12-31 19:34:02.270 25304-25304/com.example.administrator.myapplication I/LIFECYCLE: Start
12-31 19:34:02.270 25304-25304/com.example.administrator.myapplication I/LIFECYCLE: Resume
12-31 19:34:14.690 25304-25304/com.example.administrator.myapplication I/LIFECYCLE: Pause
12-31 19:34:16.300 25304-25304/com.example.administrator.myapplication I/LIFECYCLE: Stop
12-31 19:34:16.310 25304-25304/com.example.administrator.myapplication I/LIFECYCLE: Destroy

1.4 分析

程序开始运行时经过了三个状态,分别为onCreate(), onStart(),onResume()

  • onCreate: Activity启动以后第一个被调用的函数,用来进行初始化。
  • onStart(): Activity显示到屏幕上时会被调用。
  • onResume(): Activity可以接受用户的输入时,会被调用,处于Activity栈的栈顶。

程序关闭时经过了三个状态,分别为onPause(),onStop(),onDestroy()

  • onPause(): Activity进入暂停状态时被调用。
  • onStop(): Activity不对用户可见以后,就会被调用,Activity进入停止状态。
  • onDestory: Activity被终止前,或者说进入非活动状态时,会被调用。

2. 外来电话接入的情况

2.1 程序启动

2.2 打电话过程中

2.3 挂断电话

2.4 日志文件

log1

12-31 19:27:49.400 20642-20642/com.example.administrator.myapplication I/LIFECYCLE: Create
12-31 19:27:49.400 20642-20642/com.example.administrator.myapplication I/LIFECYCLE: Start
12-31 19:27:49.420 20642-20642/com.example.administrator.myapplication I/LIFECYCLE: Resume

log2

12-31 19:27:49.400 20642-20642/com.example.administrator.myapplication I/LIFECYCLE: Create
12-31 19:27:49.400 20642-20642/com.example.administrator.myapplication I/LIFECYCLE: Start
12-31 19:27:49.420 20642-20642/com.example.administrator.myapplication I/LIFECYCLE: Resume
12-31 19:29:17.590 20642-20642/com.example.administrator.myapplication I/LIFECYCLE: Pause
12-31 19:29:23.800 20642-20642/com.example.administrator.myapplication I/LIFECYCLE: Stop

log3

12-31 19:27:49.400 20642-20642/com.example.administrator.myapplication I/LIFECYCLE: Create
12-31 19:27:49.400 20642-20642/com.example.administrator.myapplication I/LIFECYCLE: Start
12-31 19:27:49.420 20642-20642/com.example.administrator.myapplication I/LIFECYCLE: Resume
12-31 19:29:17.590 20642-20642/com.example.administrator.myapplication I/LIFECYCLE: Pause
12-31 19:29:23.800 20642-20642/com.example.administrator.myapplication I/LIFECYCLE: Stop
12-31 19:29:59.880 20642-20642/com.example.administrator.myapplication I/LIFECYCLE: Restart
12-31 19:29:59.880 20642-20642/com.example.administrator.myapplication I/LIFECYCLE: Start
12-31 19:29:59.880 20642-20642/com.example.administrator.myapplication I/LIFECYCLE: Resume

2.5 分析

程序开始运行时经过了三个状态,分别为onCreate(), onStart(),onResume():

  • onCreate: Activity启动以后第一个被调用的函数,用来进行初始化。
  • onStart(): Activity显示到屏幕上时会被调用。
  • onResume(): Activity可以接受用户的输入时,会被调用,处于Activity栈的栈顶。

程序接入电话时经过了两个状态,分别为onPause(),onStop():

  • onPause(): onPause(): Activity进入暂停状态时被调用。
  • onStop(): Activity不对用户可见以后,就会被调用,Activity进入停止状态。
  • 由于电话接入的时候,来电界面会出现,所以导致原有程序进入不可见的状态,所以先执行onPause在执行onStop()回调函数。

程序在电话挂断的时候经过了三个状态,分别为onRestart(),onStart(),onResume():

  • onRestart(): Activity从停止状态进入活动状态。
  • onStart(): Activity显示到屏幕上时会被调用。
  • onResume(): Activity可以接受用户的输入时,会被调用,处于Activity栈的栈顶。
  • 电话挂断以后,重新进入原程序界面,所以会经历重启,接受用户输入的过程。

3. 外来短信接入的情况

3.1 程序启动

3.2 程序接入短信

3.3 日志文件

log1

12-31 19:38:11.740 28370-28370/com.example.administrator.myapplication I/LIFECYCLE: Create
12-31 19:38:11.750 28370-28370/com.example.administrator.myapplication I/LIFECYCLE: Start
12-31 19:38:11.760 28370-28370/com.example.administrator.myapplication I/LIFECYCLE: Resume

log2

12-31 19:38:11.740 28370-28370/com.example.administrator.myapplication I/LIFECYCLE: Create
12-31 19:38:11.750 28370-28370/com.example.administrator.myapplication I/LIFECYCLE: Start
12-31 19:38:11.760 28370-28370/com.example.administrator.myapplication I/LIFECYCLE: Resume

3.4 分析

程序接入短信的时候,可以发现,日志文件没有发生任何变化,这也是可以理解的,因为这个过程中短信的进程并没有变为前台进程,所以原程序没有被中断,所以一切正常运行。

4. 程序运行中切换到其他程序(比如说Message)

4.1 程序启动:

4.2 切换为message

4.3 返回原程序

4.4 日志文件

log1 启动

12-31 19:42:23.120 28370-28370/com.example.administrator.myapplication I/LIFECYCLE: Restart
12-31 19:42:23.120 28370-28370/com.example.administrator.myapplication I/LIFECYCLE: Start
12-31 19:42:23.120 28370-28370/com.example.administrator.myapplication I/LIFECYCLE: Resume

log2切换

12-31 19:47:03.930 2653-2653/com.example.administrator.myapplication I/LIFECYCLE: Create
12-31 19:47:03.930 2653-2653/com.example.administrator.myapplication I/LIFECYCLE: Start
12-31 19:47:03.930 2653-2653/com.example.administrator.myapplication I/LIFECYCLE: Resume
12-31 19:50:07.910 2653-2653/com.example.administrator.myapplication I/LIFECYCLE: Pause
12-31 19:50:09.710 2653-2653/com.example.administrator.myapplication I/LIFECYCLE: Stop

log3 返回

12-31 19:47:03.930 2653-2653/com.example.administrator.myapplication I/LIFECYCLE: Create
12-31 19:47:03.930 2653-2653/com.example.administrator.myapplication I/LIFECYCLE: Start
12-31 19:47:03.930 2653-2653/com.example.administrator.myapplication I/LIFECYCLE: Resume
12-31 19:50:07.910 2653-2653/com.example.administrator.myapplication I/LIFECYCLE: Pause
12-31 19:50:09.710 2653-2653/com.example.administrator.myapplication I/LIFECYCLE: Stop
12-31 19:51:13.840 2653-2653/com.example.administrator.myapplication I/LIFECYCLE: Restart
12-31 19:51:13.840 2653-2653/com.example.administrator.myapplication I/LIFECYCLE: Start
12-31 19:51:13.850 2653-2653/com.example.administrator.myapplication I/LIFECYCLE: Resume

4.5 分析

从日志中可以看出,切换为另外的程序,但不退出本程序的时候,执行了两个回调函数:onPause(),onStop():

可见这个过程是原程序进入暂停状态,然后对用户不可见,但是并没有终止。

当从另外切换的程序中返回时,制定了三个回调函数:onRestart(),onStart(),onResume()。

可见这个过程是原程序重启,从停止状态变为活动状态前调用了onRestart(),然后将Activity显示在屏幕上(onStart),然后Activity可以接受用户的输入(onResume)。

【Android实验】第一个Android程序与Activity生命周期的更多相关文章

  1. Android学习路线(十二)Activity生命周期——启动一个Activity

    DEMO下载地址:http://download.csdn.net/detail/sweetvvck/7728735 不像其他的编程模式那样应用是通过main()函数启动的.Android系统通过调用 ...

  2. Android 面试之横竖屏切换的Activity生命周期

    public class EngineerJspActivity extends Activity { private static String Tag = "EngineerJspAct ...

  3. Android学习路线(十四)Activity生命周期——停止和重新启动(Stopping and Restarting)一个Activity

    正确地停止和重新启动你的activity在activity的生命周期中是一个非常重要的过程.这样可以确保你的用户感觉到你的应用一直都活着而且没有丢失进度.你的activity的停止和重新启动时有几个重 ...

  4. 图解:Activity生命周期

    当用户需要对手机通过屏幕进行交互时,比如打一个电话,拍张照片,发送一个邮件,或者查看地图.开发者就需要实现一个活动(Activity).每个活动都将作为一个提供用户使用接口的窗口.它可以填满整个屏幕, ...

  5. Android-管理Activity生命周期 -暂停和恢复一个Activity

    在正常的使用app时,前台的activity有时候会被可见的组件阻塞导致activity暂停.比如,当打开一个半透明的activity(就像打开了一个对话框),之前的activity就会暂停.只要ac ...

  6. Android-管理Activity生命周期 -开始一个Activity

    很多程序都是从main()方法开始启动的,和其他程序不同,android是在activity生命周期的特定状态的特定回调方法中初始化代码的.activity启动和销毁的时候都用很多回调方法. 这里将要 ...

  7. Android Studio新建一个HelloWorld 程序(App)

    Android Studio新建一个HelloWorld程序(App) 新建 或者直接启动程序(注:如果已有程序,此方法会直接打开最近一次关闭从程序) 更改App名 选择App运行平台 选择模板 更改 ...

  8. [转]: 两分钟彻底让你明白Android Activity生命周期(图文)!

    转自:http://blog.csdn.net/android_tutor/article/details/5772285 大家好,今天给大家详解一下Android中Activity的生命周期,我在前 ...

  9. android Activity生命周期(设备旋转、数据恢复等)与启动模式

    1.Activity生命周期     接下来将介绍 Android Activity(四大组件之一) 的生命周期, 包含运行.暂停和停止三种状态,onCreate.onStart.onResume.o ...

随机推荐

  1. Window版本 安装mysql

    #1.下载:MySQL Community Server 5.7.16 http://dev.mysql.com/downloads/mysql/ 下载下来解压到指定目录 就安装完成了 #2.解压 如 ...

  2. UIWebview于JS交互

    最近使用火车票网的限行网页,但是广告以及头部nav和地步footer都是我们现在所不需要的,所以决定使用js交互,下面所有代码都写在 webViewDidFinishLoad 里面 1.查看原网址的源 ...

  3. 十天精通CSS3(9)

    Keyframes介绍 Keyframes被称为关键帧,其类似于Flash中的关键帧.在CSS3中其主要以“@keyframes”开头,后面紧跟着是动画名称加上一对花括号“{…}”,括号中就是一些不同 ...

  4. spring boot配置service发布服务

    在application.yml中配置 server: port: 8080 context-path: /crm spring: datasource: driver-class-name: com ...

  5. mysql 常用命令 常用SQL语句

    维护命令 数据库 ##创建数据库 mysql> create database test; Query OK, 1 row affected ##删除数据库 mysql> drop dat ...

  6. zabbix3.0 centos7 yum 安装与简单配置

    参考文档https://www.zabbix.com/documentation/3.0/start zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.zab ...

  7. Java-单向链表算法

    /** * 数据结构之链表(单向链表) * @author Administrator * */ public class LinkNodeTest { public static void main ...

  8. 谷歌插件--Advanced REST client

    早上在测试调用服务去获取数据的时候,因为自己的单元测试不是很熟悉,问了同事,同事给我介绍了一个插件Advanced REST client,这个可以在谷歌的“扩展与应用”中找打,使用 安装之后会提示要 ...

  9. linux常用命令:du 命令

    Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的. 1.命令格式: du [选项] [文件|目录] 2. ...

  10. Node.js最新技术栈之Promise篇

    前言 大家好,我是桑世龙,github和cnodejs上的i5ting,目前在天津创业,公司目前使用技术主要是nodejs,算所谓的MEAN(mongodb + express + angular + ...