实验内容

  • 了解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. [转]如何解决外边距margin叠加的问题探讨

    两个或多个毗邻的普通流中的块元素垂直方向上的 margin 会折叠,那么如何使元素上下margin不折叠呢?下面的方法或许对大家有所帮助 一.首先你要知道什么情况下会触发:两个或多个毗邻的普通流中的块 ...

  2. 点 击 直 接加我QQ的功能

    <a target="_blank" href="tencent://message/?uin=2814920598&Site=&Menu=yes& ...

  3. 水坑式攻击-APT攻击常见手段

    所谓“水坑攻击”,是指黑客通过分析被攻击者的网络活动规律,寻找被攻击者经常访问的网站的弱点,先攻下该网站并植入攻击代码,等待被攻击者来访时实施攻击. 水坑攻击属于APT攻击的一种,与钓鱼攻击相比,黑客 ...

  4. SQL SERVER 数据库操作脚本

    创建数据库 create Database MYDB on ( Name=mydb_dat, FileName='c:\data\mydate.mdf',size=10,maxsize=50 ) LO ...

  5. 使用 PDO 方式将 Session 保存到 MySQL 数据中

    类: <?php /* 使用数据库保存session */ class DBHandler implements SessionHandlerInterface { protected $dbh ...

  6. 轻量级队列beanstalkd

    一.基本Beanstalkd,一个高性能.轻量级的分布式内存队列系统,最初设计的目的是想通过后台异步执行耗时的任务来降低高容量Web应用系统的页面访问延迟,支持过有9.5 million用户的Face ...

  7. ES6 will change the way you write JS code.

    https://hacks.mozilla.org/2015/04/es6-in-depth-an-introduction/ Counting to 6 The previous editions ...

  8. Flink - InstanceManager

    InstanceManager用于管理JobManager申请到的taskManager和slots资源 /** * Simple manager that keeps track of which ...

  9. JBoss QuickStart之深入

    EJB-AsynchronousEJB中提供异步调用的方法. "A session bean can expose methods with asynchronous client invo ...

  10. UML之类图

    类(Class)封装了数据和行为,是具有相同属性.操作.关系的对象集合的总称. 类图(Class Dialog)使用系统中不同类来描述系统的静态结构,类图用来描述不同类和它们之间的关系. 类图由三部分 ...