实验内容

  • 了解Activity的四个状态
  • Activity的生命周期
  • 启动另外一个Activity

    实验要求

  • 编码实现观察Activity的生命周期函数执行过程
  • 编码实现启动另外一个Activity

    实验步骤

一、什么是Activity

Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务,例如拨号、拍照、发送email、看地图。
每一个Activity被给予一个窗口,在上面可以绘制用户接口。
窗口通常充满屏幕,但也可以小于屏幕而浮于其它窗口之上。

在一个应用程序中通常由多个Activity构成,新建的工程都会在Manifest.xml中指定一个主的Activity

二、Activity的四个状态

  • Active/Runing
    它显示在屏幕最前端,处于栈的最顶端(Activity栈顶),此时它处于可见并可和用户交互的激活状态,叫做活动状态或者运行状态。
  • Paused
    窗口可见,只是失去焦点,不可以和用户交互。
    例如出现透明的悬浮窗口。
  • Stoped
    窗口被隐藏,不再可见,依然保持所有状态和成员信息。
    一般的Android应用退出,就会处于这种状态。
  • Killed
    从内存中删除Activity。
    有两种方式删除。系统直接结束进程;要求Activity结束。

三、Activity的7个方法

  • 1、onCreate
    当活动第一次启动的时候,触发该方法,可以在此时完成活动的初始化工作。onCreate 方法有一个参数,该参数可以为空( null ),也可以是之前调用 onSaveInstanceState ()方法保存的状态信息。
  • 2、onStart
    该方法的触发表示所属活动将被展现给用户。
  • 3、onResume
    当一个活动和用户发生交互的时候,触发该方法。
  • 4、onPause
    当一个正在前台运行的活动因为其他的活动需要前台运行而转入后台运行的时候,触发该方法。这时候需要将活动的状态持久化,比如正在编辑的数据库记录等。
  • 5、onStop
    当一个活动不再需要展示给用户的时候,触发该方法。如果内存紧张,系统会直接结束这个活动,而不会触发 onStop 方法。 所以保存状态信息是应该在onPause时做,而不是onStop时做。活动如果没有在前台运行,都将被停止或者Linux管理进程为了给新的活动预留足够的存储空间而随时结束这些活动。在一些情况下,onPause方法或许是活动触发的最后的方法,因此开发者需要在这个时候保存需要保存的信息。
  • 6、onRestart
    当处于停止状态的活动需要再次展现给用户的时候,触发该方法。
  • 7、onDestroy
    当活动销毁的时候,触发该方法。和 onStop 方法一样,如果内存紧张,系统会直接结束这个活动而不会触发该方法。
  • onSaveInstanceState
    系统调用该方法,允许活动保存之前的状态,比如说在一串字符串中的光标所处的位置等。
    通常情况下,开发者不需要重写覆盖该方法,在默认的实现中,已经提供了自动保存活动所涉及到的用户界面组件的所有状态信息
    Activty的生命周期的也就是它所在进程的生命周期,包含以上七个方法,如下图所示:

图2

四、Activity栈

每个Activity的状态是由它在Activity栈(是一个后进先出LIFO,包含所有正在运行Activity的队列)中的位置决定的。 当一个新的Activity启动时,当前的活动的Activity将会移到Activity栈的顶部。
如果用户使用后退按钮返回的话,或者前台的Activity结束,活动的Activity就会被移出栈消亡,而在栈上的上一个活动的Activity将会移上来并变为活动状态。如下图所示

图3

五、Activity生命周期测试

1、首先打开之前新建的HelloWorld工程,在MainActivity.java中添加如下代码:

图4
2、然后重新编译一下,如下图

图4.1
3、打开Android模拟器之后运行刚刚编译好的工程,然后打开下方的Logcat如下图所示

图4.2
4、经过一系列的打印信息之后我们可以找到日志显示系统,其中有我们在代码中写的信息。
如下图所示
[](http://images2015.cnblogs.com/blog/820837/201604

/820837-20160424193747929-774773283.png)

图5
我们可以看到应用开启后,系统分别调用了onCreate,onStart,onResume,当我们点击home键之后应用退出,再看Logcat的打印信息,可以看到依次调用了onPause,onStop,如下图

图6
当我们再次点击应用图标回到应用时,依次又调用了onStart,onResume是ing用再次重现,如下图

图7
当我们直接点击返回按键时,系统又依次调用了onPause,onStop,onDestroy使应用销毁,如下图所示

图8
通过以上信息,我们可以对应到图2的Activity生命周期,他们是吻合的。

六、Activity的信息传递

基本原理为:要实现从1个activity跳到另一个activity,这需要通过intent来实现。当然我们需要在Next按钮上绑定一个按钮按下的监听器,一旦该按钮监听到有按键按下,则通过intent将指定的第2个activity触发,这样就完成了本次试验的功能。

1、首先为另外一个Activity设置布局,按照如下步骤新建一个布局文件

图11

图12
按照下面修改代码

图15
2、新建一个Java类,命名为SecondActivity,如下图

图9
让其继承Activity类,如下图

图10
3、在activity_main.xml中添加一个按钮组件,按照下图修改代码

图13
4、在MainActivity.java里面为按钮添加监听,按照下图添加代码

图14
5、在AndroidManifest.xml文件里注册第二个SecondActivity.class,如下图

图16
6、按照下图修改SecondActivity.java的代码

图17
7、全部保存以后,点击rebuild,如下图

图18
8、最后运行一下,可以看到如下结果

图19
点击按钮后可以看到下图

图20
以上就是关于Activity组件的基本操作。

Android四大组件之Activity的更多相关文章

  1. Android四大组件之Activity(活动)及其布局的创建与加载布局

    Android四大组件之Activity(活动)及其布局的创建与加载布局 什么是Activity ? 活动(Activity)是包含用户界面的组件,主要用于和用户进行交互的,一个应用程序中可以包含零个 ...

  2. Android四大组件之——Activity的生命周期(图文详解)

        转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai       联系方式:JohnTsai.Work@gmail.com       [Andro ...

  3. Android四大组件之——Activity的开启:StartActivity()和StartActivityForResult()(图文详解)

                如需转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai       联系方式:JohnTsai.Work@gmail.com   ...

  4. 【Android开发日记】之入门篇(四)——Android四大组件之Activity

    在Android中,无论是开发者还是用户,接触最多的就算是Activity.它是Android中最复杂.最核心的组件.Activity组件是负责与用户进行交互的组件,它的设计理念在很多方面都和Web页 ...

  5. Android四大组件及activity的四大启动模式

    Android四大组件 1. 广播接收者的两种类型: (1)系统广播接收者,就是继承BroadcastReceiver这个类,然后还要在清单文件中注册,注册之后给他一个action.当系统发生了这个a ...

  6. Android四大组件之——Activity(一)定义、状态和后退栈(图文详解)

    什么是Activity 关键字:应用组件.四大组件.用户界面,交互. An Activity is an application component that provides a screen wi ...

  7. Android 四大组件之 Activity(二)

    1.综述 Activity是Android四大组件(Application Components)之一,简单来说Activity就是平常所见到的用户界面,一般情况下,一个Activity所占的窗口是满 ...

  8. Android 四大组件之 Activity

    1 简介 Activity (活动) 即应用程序 显示的 界面.可以通过两种方式 设置显示的内容 1:纯代码方式 2:xml 布局方式 无论哪一种方式,都是通过 setContentView 来设置显 ...

  9. Android 四大组件之 Activity(一)

    1.Activity的定义及作用: Android系统中的四大组件之一,可以用于显示View.Activity是一个与用户交互的系统模块,几乎所有的Activity都是和用户进行交互的一个应用程序的组 ...

  10. [Android基础]Android四大组件之Activity总结

    1.Activity简介 Activity是Android一个非常重要的用户接口(四大组件之一),是可见的,主要是用户和应用程序之间进行交互的接口.在每个Activity中都可以放很多控件,所以也可以 ...

随机推荐

  1. 移动APP项目研发流程及版本规划(转)

    一个移动APP项目研发规模可大可小,但都离不开以下几个成员:产品经理.ui设计师.前端开发.后端开发.测试等.如何合理安排项目成员工作.确保项目顺利进行呢?一个清晰合理的项目研发流程控制很重要. 项目 ...

  2. [leetcode] 29. divide two integers

    这道题目一直不会做,因为要考虑的corner case 太多. 1. divisor equals 0. 2. dividend equals 0. 3. Is the result negative ...

  3. Kali 2016.2版本安装vmtools实现本机与虚拟机文件复制

    Kali官方下载:http://cdimage.kali.org/kali-2016.2/kali-linux-2016.2-amd64.iso VM12 Pro下载:https://mega.nz/ ...

  4. Markdown常用语法

    什么是Markdown Markdown 是一种方便记忆.书写的纯文本标记语言,用户可以使用这些标记符号以最小的输入代价生成极富表现力的文档. 通过Markdown简单的语法,就可以使普通文本内容具有 ...

  5. php如何查看变量是真实被引用

    $var1 = 'Hello World'; $var2 = ''; $var2 =&$var1; debug_zval_dump(&$var1); $a = "aaa&qu ...

  6. Open Data Structure Templates

    数据结构模板 Chen 2016/12/22 前言 本篇博客的模板,全部是我纯手打的,如果有发现错误,请在下方留言指正:).欢迎大家参考. 有一些地方还不是很完善,等过一阵子用C++实现和部分重构下. ...

  7. 奥迪--A3

    -型号:A3 -价格:18-28W -动力:1.4T/1.8T -变速箱:7挡双离合 -长宽高:4.32,1.79,1.43(Limousine:4.46,1.80,1.42) -油箱:50L -发动 ...

  8. javascript入门:this的规则与bind的各种风骚用法

    javascript的任何函数的作用域中都有一个this变量.理解这个this变量才能正确地编写javascript程序,正确使用javascript的各种功能. this变量是这样确定的: 1 如果 ...

  9. Unity5和WebGL移植指南的一些总结

    对于手游开发者来说,更新版本往往意味着非常复杂的过程,你需要根据反馈做更新.测试.提交然后等待审核,而由于不需要客户端依赖,页游往往是快速测试游戏版本的最佳途径,很多人可能都知道Unity 5可以再不 ...

  10. win7下利用VM8安装CentOS6.3配置静态IP上网

    1 环境 宿主主机64位win7,利用VM8安装的64位CentOS6.3,64位的.在VM中配置CentOS的IP为静态,可上互联网.具体配置过程如下. 2 步骤 首先将VM的setting选项中, ...