android开发实践指导书5认识activity_第1页
android开发实践指导书5认识activity_第2页
android开发实践指导书5认识activity_第3页
android开发实践指导书5认识activity_第4页
android开发实践指导书5认识activity_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、5 认识 Android Activity(活动)活动的状态转换每个活动(Activity实例)从生成到彻底退出(在屏幕上看不见活动的界面不算彻底退出,只它占用的内存才算),这一个时段叫做这个活动的生命周期。在其生命周期内,这个活动有在运行、暂停和停止三种可能的状态间进行转换。每次状态发生转换时,都有一个Activity方法将状态改变的消息通知给这个活动。图5-1显示了一个活动的生命周期、状态以及状态切换时系统调用的方法。图5-1一个活动的状态和生命周期函数以某个活动(下面叫做活动A)为例,图5-1是说:活动A被创建时,会自动执行onCreate方法,执行onCreate方法完毕后,活动A处于

2、停止(Stopped)状态,对用户而言是不可见的。接着,会自动执行onStart方法,执行onStart方法后,活动A处于暂停(Paused) 状态,对用户而言是可见的。再接着,会自动执行onResume方法,执行onResume方法后,活动A处于运行状态(Running),对用户而言是可见的活动A处于屏幕的最前面,盖住了其他活动。2.活动A被部分遮住的时候(例如显示框的时候),会自动执行onPause方法,执行这个方法后,活动A处于暂停状态。当活动A不再被部分遮住时,将执行onResume方法,活动A进入运行状态。活动A被完全遮住的时候(例如被活动B覆盖的时候),会自动执行onPause方法

3、,执行这个方法后,活动A处于暂停状态。接着,会自动执行onStop方法,随后活动A进入停止状态。内存紧张的话,如果活动A长时间处于停止状态,则可能会被销毁。如果遮住活动A的活动(例如活动B)退出了,那么活动A重新进入运行状态,期间会执行onStart方法和onResume方法。用户按回退键退出活动A的时候,会自动执行onPause方法,执行这个方法后,活动A处于暂停状态。接着,会自动执行onStop方法,随后活动A进入停止状态。再接着,执行onDestroy方法,随后活动A就彻底退出了。生命周期函数以下方法都是生命周期函数(或叫做生命周期方法):onCreate, onStart, onRes

4、ume, onPause, onStop, onDestroy。生命周期函数的特征是:1.在活动的状态发生转换时会自动执行生命周期函数不是由开发者写代码来调用它们。2.这些函数的写法都是 on周期函数。但是,写成 on的方法还有,有的不属于生命3.Activity 类预定义了这些方法。开发者写代码时,定义自己的活动类必须继承自Activity(或者它的子类),然后根据需要重载某一个或一些生命周期函数。onCreate 方法的作用onCreate(.)方法的作用:实例化组件并将组件放置在屏幕上(调用方法setContentView( ));已实例化的组件;为组件设置器以处理用户交互;外部模型数据

5、。无需自己调用onCreate(.)方法或任何其他Activity生命周期方法,理解这一点很重要。Activity子类里覆盖这些方法即可,Android会适时去调用它们。只需在注意:开发者写onCreate方法时,方法内部首先要调用父类的onCreate方法,如下面的代码所示:public class MainActivity extendivity /MainActivity 是活动(Activity)的子类Override利用日志理解活动的生命周期下面,重载生命周期方法,要它们输出自己正在执行的信息。这么做的步骤是:一、二、三、添加生命周期方法。修改生命周期方法,使它在执行时输出自己正在执

6、行的信息。活动的生命周期方法执行轨迹。的起点是可以运行的oWorld 程序。一、 添加生命周期方法1.打开oWorld 项目,在编辑器中显示 MainActivity.java 文件(或者你自己命名的 java文件)。把光标放置到 MainActivity 类内部。如图 2.图 2添加生命周期方法之前2.按“Ctrl + O”(同时按 Ctrl 键和 O 字母键),出现图 3 的效果。setContentView(R.layout.activity_main);/加载布局文件,显示活动的界面super.onCreate(savedInstane);/调用父类的onCreate()protect

7、ed void onCreate(Bundle savedInstane) 图 3添加要重载的方法3.选择要重载的方法,比如 onStart 方法,点击 OK。4.在编辑窗口里出现了 onStart 方法。5.重复第 3,4 步,分别添加 onStop, onResume, onPause, onDestroy 方法。二、修改生命周期方法6.在 MainActivity 类内添加一个字符串常量,它的名字是 TAG。写法是:private sic String TAG = “MainActivity”;7.在 onStart()方法内,加入语句: Log.d(TAG, “调用了 onStart(

8、)”);这一语句的作用是输出日志消息:标题为”MainActivity”,正文为”调用了onStart()”。关于使用 Log 类输出日志消息的用法见“Android 开发常用知识点.docx”中的“输出日志信息”一节。8.此时,Log 这个词会显示成红色字体。这是因为没有导入定义它的类。按 Alt + Enter 组合键,将自动导入定义 Log 的类。9.重复第 7, 8 步,在 onCreate, onStop, onResume, onPause, onDestroy 方法内分别加入语句:Log.d(TAG, “调用了()”);/这里,10. 最后,完整的代码如下。替换成方法名publi

9、c class MainActivity extendivity /MainActivity 是活动(Activity)的子类private sic String TAG = MainActivity;Overrideprotected void onCreate(Bundle savedInstane) super.onCreate(savedInstane);/调用父类的onCreate()setContentView(R.layout.activity_main);/加载布局文件,显示活动的界面Log.d(TAG, 调用了 onCreate().);Overrideprotected v

10、oid onStart() super.onStart();Log.d(TAG, 调用了 onStart().);Overrideprotected void onStop() super.onStop();Log.d(TAG, 调用了 onStop().);Overrideprotected void onDestroy() super.onDestroy();Log.d(TAG, 调用了 onDestroy().);Overrideprotected void onResume() super.onResume();Log.d(TAG, 调用了 onResume().);Overridep

11、rotected void onPause() super.onPause();Log.d(TAG, 调用了 onPause().);三、活动的生命周期方法执行轨迹关于使用 Log 类输出日志消息的用法见“Android 开发常用知识点.docx”中的“输出日志信息”一节。下面开展实验,步骤如下。1.在 logcat 视图中,选择显示 Debug 以三个字。别的日志消息,并在搜索框中输入“调用了”2.启动oWorld 程序。在 logcat 视图中会观察到什么日志消息?为什么会有这些消息?3.点击模拟内的旋转屏幕按钮。在 logcat 视图中会观察到什么日志消息?为什么会有这些消息?(因为旋转屏幕会执行两步。以竖屏转为横

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论