Android四大组件之Activity
实验内容
- 了解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的更多相关文章
- Android四大组件之Activity(活动)及其布局的创建与加载布局
Android四大组件之Activity(活动)及其布局的创建与加载布局 什么是Activity ? 活动(Activity)是包含用户界面的组件,主要用于和用户进行交互的,一个应用程序中可以包含零个 ...
- Android四大组件之——Activity的生命周期(图文详解)
转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai 联系方式:JohnTsai.Work@gmail.com [Andro ...
- Android四大组件之——Activity的开启:StartActivity()和StartActivityForResult()(图文详解)
如需转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai 联系方式:JohnTsai.Work@gmail.com ...
- 【Android开发日记】之入门篇(四)——Android四大组件之Activity
在Android中,无论是开发者还是用户,接触最多的就算是Activity.它是Android中最复杂.最核心的组件.Activity组件是负责与用户进行交互的组件,它的设计理念在很多方面都和Web页 ...
- Android四大组件及activity的四大启动模式
Android四大组件 1. 广播接收者的两种类型: (1)系统广播接收者,就是继承BroadcastReceiver这个类,然后还要在清单文件中注册,注册之后给他一个action.当系统发生了这个a ...
- Android四大组件之——Activity(一)定义、状态和后退栈(图文详解)
什么是Activity 关键字:应用组件.四大组件.用户界面,交互. An Activity is an application component that provides a screen wi ...
- Android 四大组件之 Activity(二)
1.综述 Activity是Android四大组件(Application Components)之一,简单来说Activity就是平常所见到的用户界面,一般情况下,一个Activity所占的窗口是满 ...
- Android 四大组件之 Activity
1 简介 Activity (活动) 即应用程序 显示的 界面.可以通过两种方式 设置显示的内容 1:纯代码方式 2:xml 布局方式 无论哪一种方式,都是通过 setContentView 来设置显 ...
- Android 四大组件之 Activity(一)
1.Activity的定义及作用: Android系统中的四大组件之一,可以用于显示View.Activity是一个与用户交互的系统模块,几乎所有的Activity都是和用户进行交互的一个应用程序的组 ...
- [Android基础]Android四大组件之Activity总结
1.Activity简介 Activity是Android一个非常重要的用户接口(四大组件之一),是可见的,主要是用户和应用程序之间进行交互的接口.在每个Activity中都可以放很多控件,所以也可以 ...
随机推荐
- wordpress电子商务插件和主题的使用方法
前提步骤:卸载wordpress干净,需要把相应的数据库删除:drop databade **: (1)先改wordpress中重要文件的权限:777 (2)用usradd -d www /html命 ...
- RUDP之一 —— UDP VS TCP
原文链接 原文:http://gafferongames.com/networking-for-game-programmers/udp-vs-tcp/ 介绍 大家好,我是Glenn Fiedler, ...
- 1.0 多控制器管理(附:Demo)
本文并非最终版本,如有更新或更正会第一时间置顶,联系方式详见文末 如果觉得本文内容过长,请前往本人 “简书” 控制器 : 一个iOS的app很少只由一个控制器组成,除非这个app极其简 ...
- GridView,Repeater增加自动序号列
有三种实现的方式, 第一种方式,直接在Aspx页面GridView模板列中.这种的缺点是到第二页分页时又重新开始了. <Columns> <asp:TemplateField Hea ...
- jsonp模拟获取百度搜索相关词汇
随便写了个jsonp模拟百度搜索相关词汇的小demo,帮助新手理解jsonp的用法. <!DOCTYPE html><html lang="en">< ...
- HTML5 meta最全使用手册
1.声明文档使用的字符编码 <meta charset='utf-8'> 2.声明文档的兼容模式 <meta http-equiv="X-UA-Compatible&quo ...
- 25 Killer Actions to Boost Your Self-Confidence
25 Killer Actions to Boost Your Self-Confidence Once we believe in ourselves, we can risk curiosity, ...
- a 标签 启用或禁用点击事件
<a href="#" id="btnAuthCode" class="authCode_btn">获取验证码</a> ...
- ZeroMQ接口函数之 :zmq_term - 终结ZMQ环境上下文(context)
ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_term zmq_term(3) ØMQ Manual - ØMQ/4.1.0 Name zmq_term - 终 ...
- C# XMPP客户端与openfire通信(Matrix Xmpp 授权破解教程)
如此著名的XMPP , 居然试过jabber-net, agsXmpp,matrix Xmpp, 无数多个例子, 居然没有一个能实现最简单的 发消息.收消息功能.好无语. 最后还是决定从商业产品 Ma ...