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中都可以放很多控件,所以也可以 ...
随机推荐
- NewBluePill源码学习
NewBluePill的源码也看的差不多了,一直说等有时间了再写学习的一些心得,拖来拖去弄到现在了,时间不是等来的,慢慢开始吧. 0x00 初识硬件虚拟化 硬件虚拟化对大数人来讲还是比较陌生. ...
- WPF
最近在学习WPF,学习WPF首先上的是微软的MSDN,然后再搜索了一下网络有关WPF的学习资料.为了温故而知新把学习过程记录下来,以备后查.这篇主要讲WPF的开发基础,介绍了如何使用Visual St ...
- SwipeRefreshLayout下拉刷新简单用例
自己的下拉刷新组件 下拉刷新并自动添加数据 MainActivity package com.shaoxin.myswiperefreshlayout; import android.graphics ...
- sql Lloader
create table ban_ji(id integer,ban_ji varchar2(25))insert into ban_ji values(1,'1-(1)');insert into ...
- 如何直接在ftp里编辑文件
首先要连接ftp,如何链接ftp,这个我已经分享过,如果还有不懂的,可以查看下经验分享,打开ftp,并连接你要修改的站点! 下载安装代码编辑器,比如EditPlus.sublime text等,随 ...
- Codeforces118D Caesar's Legions(DP)
题目 Source http://codeforces.com/problemset/problem/118/D Description Gaius Julius Caesar, a famous g ...
- MySQL黑科技用法总结(持续更新)
1.利用set插入数值 insert [into] 表名 set 列=值. 2.利用select对字段进行测试 ) ,并且有2条记录 ',num1+1的计算结果 tips:相等返回1,否则返回0 f ...
- quick-3.5 eclipse android
quick-3.5 eclipse android 上遇到的 问题 首先是已经安装了SDK NDK ADT 环境变量都已经配置好了 直接打开项目然后运行 却出现这个鸟问题如图: NDK_ROOT = ...
- HTML基础篇之HTML基本结构
课堂知识总结 第一接触和学习HTML知识在学习过程中对所属的标签的自己认为的理解和解释. HTML元素:文档里面的标签和内容. 比如:<h1>大家好</h1> 左边的是开始标 ...
- 【5集iCore3_ADP演示视频】5-5 iCore3应用开发平台示波器和信号源校准
iCore3双核心应用开发平台基于iCore3双核心板,包含ARM.FPGA.7寸液晶屏.双通道数字示波器.任意波发生器.电压表等模块,是一款专为电子爱好者设计的综合性电子学习系统. [视频简介]本视 ...