项目6:经历安卓生命周期

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

猿圈)Android生命周期Activity生命周期指Activity从启动到销毁的过程。Activity表现为4种状态,分别是活动状态、暂停状态、停止状态和非活动状态。•活动状态。Activity在用户界面中处于最上层,完全能被用户看到,能够与用户进行交互。•暂停状态。Activity在界面上被部分遮挡,该Activity不再处于用户界面的最上层,且不能够与用户进行交互;或者屏幕被锁定。•停止状态。Activity在界面上完全不能被用户看到,也就是说,这个Activity被其他Activity全部遮挡。•非活动状态。不在以上3种状态中的Activity则处于非活动状态。这4种状态是可以相互转换的,变换关系如下图所示。另外,下图所示为状态之间转化的可能路径,其中着色的椭圆表示活动的主要状态,矩形表示当活动在状态之间转换时会被调用的回调方法。猿圈从某一状态转变到另一状态,代码如下所示:publicclassMyActivityextendsActivity{protectedvoidonCreate(BundlesavedInstanceState);protectedvoidonStart();protectedvoidonRestart();protectedvoidonResume();protectedvoidonPause();protectedvoidonStop();protectedvoidonDestroy();}下表对各个事件回调方法进行了说明:方法是否可终止说明猿圈()否Activity启动后第一个被调用的方法,常用来进行Activity的初始化,例如创建View、绑定数据或恢复信息等。onStart()否当Activity显示在屏幕上时,该方法被调用。onRestart()否当Activity从停止状态进入活动状态前调用该方法。onResume()否当Activity能够与用户交互,接受用户输入时,该方法被调用。此时的Activity位于Activity栈的栈顶。onPause()是当Activity进入暂停状态时,该方法被调用。一般用来保存持久的数据或释放占用的资源。onStop()是当Activity进入停止状态时,该方法被调用。onDestroy()是在Activity被终止前,即进入非活动状态前,该方法被调用。onSaveInstanceState()否Android系统因资源不足终止Activity前调用该方法,用以保存Activity的状态信息,供onRestoreInstanceState()或onCreate()恢复之用。onRestoreInstanceState()否恢复onSaveInstanceState()保存的Activity状态信息,在onStart()和onResume()之间被调用。下图是对Activity事件回调方法的调用顺序的说明:当一个活动启动另一个活动时,这两个活动都将经历生命周期转换。一个暂停或许是停止,然而被启动的活动则启动。有时,这些活动可能需要协调。当这两个活动在同一个进程中时,生命周期的回调顺序是明确界定的:调用当前活动的onPause()方法;然后,按序调用启动活动的onCreate()、onStart()、onResume()方法;之后,如果该活动不需再在屏幕上可见,则调用它的onStop()方法。下面我们就来详细学习Android是如何管理多个Activity的。Android用ActivityStack来管理多个Activity,因此,同一时刻只会有最顶上的Activity处于active或者running状态,其它的Activity都被压在下面。猿圈仍是可见的(即如果上面压着的是一个非全屏的Activity或透明的Activity),则它是处于paused状态的。在系统内存不足的情况下,paused状态的Activity是有可能被系统销毁的。2)Log日志使用LogCat是可以显示在Eclipse集成开发环境中的用来获取系统日志信息的工具。它的主要功能就是捕获包括Dalvik虚拟机产生的信息、进程信息、ActivityManager信息、PackagerManager信息、Homeloader信息、WindowsManager信息、Android运行时信息和应用程序信息等可被捕获的信息。LogCat的使用方法:打开方式选择“Window”→“ShowView”→“Other”,打开“ShowView”的选择菜单,然后在选择“Andoird”→“LogCat”命令。打开“LogCat”后,它便显示在Eclipse的下方区域。在LogCat的右上方有6个不同的下拉菜单命令,表示6种不同类型的日志信息,表示含义如下。•verbose:详细(Verbose)信息。•debug:调试(Debug)信息。•info:通告(Info)信息。•warn:警告(Warn)信息。•error:错误(Error)信息。•assert:断言(Assert)信息。猿圈同时,LogCat提供了“过滤”功能,在左上角的“+”号和“-”号分别是添加和删除过滤器。用户可以根据日志信息的标签(Tag)、产生日志的进程编号(Pid)或信息等级(Level)对显示的日志内容进行过滤。使用Log.v()、Log.d()、Log.i()、Log.w()、Log.e()和assert六个方法在程序中设置“日志点”。•Log.v()用来记录详细信息;调试颜色为黑色的,任何消息都会输出。•Log.d()用来记录调试信息;输出颜色是蓝色的,仅输出debug调试的信息。•Log.i()用来记录通告信息;输出为绿色,一般为提示性的消息information,它不会输出Log.v和Log.d的信息,但会显示i、w和e的信息。•Log.w()用来记录警告信息;为橙色,可以看作为warning警告,一般需要我们注意优化Android代码,同时选择它后还会输出Log.e的信息。•Log.e()用来记录错误信息;红色,可以想到error错误,这里仅显示红色的错误信息,这些错误就需要我们认真的分析以查看栈的信息了。当程序运行到“日志点”时,应用程序的日志信息便被发送到LogCat中。你可以通过判断“日志点”信息与预期的内容是否一致来了解程序是否运行正常。1.2职业素质Android生命周期在Android应用程序中十分重要,了解Android的生命周期是Android程序开发人员的必备知识。了解了这些基础的知识后,才能够开发出运行良好的Android应用程序。猿圈开发流程第一步:首先,建立一个新的项目工程,叫做ActivityDemo。第二步:创建一个新的Activity,命名为Activity2。第三步:使用Log日志类来辅助调试程序。在MainActivity的onCreate方法中调用Log.i()方法,进行日志记录。关键代码如下:Log.i(TAG,onCreateinMainActivity);第四步:在MainActivity的layout文件中添加一个按钮,显示文字为“去Activity2”。在源代码中,声明该控件,并通过findViewById创建该控件对象,并添加监听器。第五步:在该按钮监听器的回调方法中,通过新建Intent,并调用startActivity()实现Activity之间的跳转。关键代码如下:btn.setOnClickListener(newOnClickListener(){猿圈@OverridepublicvoidonClick(Viewv){//TODOAuto-generatedmethodstubIntenti=newIntent(MainActivity.this,Activity2.class);startActivity(i);}});第六步:在MainActivity中添加所有Activity生命周期相关的方法,并在所有生命周期相关的方法中添加日志记录。要实现的效果是:单击“返回MainActivity”按钮,则跳转至MainActivity;单击“返回Activity2”按钮,则跳转到Activity2。具体代码如代码清单则如下:importandroid.app.Activity;packagecom.example.activitydemo;importandroid.app.Activity;importandroid.content.Intent;importandroid.os.Bundle;importandroid.util.Log;importandroid.view.View;importandroid.widget.Button;publicclassActivity3extendsActivity{privatestaticfinalStringTAG=ActivityDemo;privateButtonbtn1;privateButtonbtn2;protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity3);Log.i(TAG,Activity3-+this.toString()+TaskID-+getTaskId());btn1=(Button)findViewById(R.id.button1);btn2=(Button)findViewById(R.id.button2);btn1.setOnClickListener(newView.OnClickListener(){publicvoidonClick(Viewv){//TODOAuto-generatedmethodstubIntenti=newIntent(Activity3.this,MainActivity.class);startActivity(i);}});btn2.setOnClickListener(newView.OnClickListener(){publicvoidonClick(Viewv){//TODOAuto-generatedmethodstubIntenti=newIntent(Activity3.this,Activity2.class);startActivity(i);}});Log.i(TAG,onCreateinActivity3);}protectedvoidonStart(){super.onStart();猿圈(TAG,onStartinActivity3);}@OverrideprotectedvoidonRestart(){super.onRestart();Log.i(TAG,onRestartinActivity3);}@OverrideprotectedvoidonResume(){super.onResume();Log.i(TAG,onResumeinActivity3);}@OverrideprotectedvoidonPause(){super.onPause();Log.i(TAG,onPauseinActivity3);}@OverrideprotectedvoidonStop(){super.onStop();Log.i(TAG,onStopinActivity3);}@Overrideprotectedvoido

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功