Android程序开发应用实例_第1页
Android程序开发应用实例_第2页
Android程序开发应用实例_第3页
Android程序开发应用实例_第4页
Android程序开发应用实例_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

Android程序开发应用实例

第五讲AndoridActivity组件

12内容概要

Activity生命周期Activity栈管理机制

解析Activity的实现Activity的消息传递Activity应用总结23本节内容什么是AndroidActivity生命周期

3Activity生命周期特征一个完整Activity的生命周期包括激活状态、运行状态、暂停状态、停止状态和终止状态。这些状态的特征为:激活状态:Activity的初始状态,所有的Activity必须经历这个状态运行状态:这时的Activity运行在屏幕的前台暂停状态:这时Activity失去了焦点但是仍然对用户可见。停止状态:这时Activity对用户不可见,所以其窗口会被其他Activity覆盖。终止状态:这时Activity将会被系统清理出内存4Activity生命周期状态转换Activity的生命周期状态转换如以下图所示:5Activity生命周期划分Activity的生命周期可以根据不同的标准分为:完整生命周期onCreate()

onDestroy()可见生命周期onStart()

onStop()前台生命周期onResume()

onPause()67本节内容什么是AndroidActivity栈管理机制

7Android管理Activity

大多数的应用程序根据功能的需要都是由多个屏幕显示组成,因此大局部的Android应用中也就必须包含多个Activity类。Android系统使用栈来管理Activity。栈是一种先进后出的数据结构,处于顶端的元素总是被先处理。当一个新的Activity启动的时候,它首先会被放置在Activity栈顶部并成为运行状态的Activity只有当这个新的Activity退出以后,之前Activity才能重新回到前台界面。8Activity栈管理过程〔续〕当前有Activity_A、Activity_B和Activity_C三个Activity。Activity_A是当前响应用户的操作的Activity,因此处于运行状态的Activity_A被放置于栈顶,而Activity_B和Activity_C处于暂停状态。9Activity栈管理过程〔续〕当Activity_A对应的窗口被关闭时,Activity_B由暂停状态转成运行状态,这时处于运行状态的Activity_B被置于栈顶。10Activity栈管理过程当接着当Activity_B对应的窗口被关闭时,Activity_C由暂停状态转成运行状态,这时处于运行状态的Activity_C被置于栈顶。1112本节内容什么是Android解析Activity的实现12Activity类中的方法android.app.Activity类提供的方法protected

void

onCreate(Bundle

icicle);protected

void

onStart();

protected

void

onRestart();

protected

void

onResume();

protected

void

onFreeze(Bundle

outIcicle)

protected

void

onPause();

protected

void

onStop();

protected

void

onDestroy();13创立Activity程序开发人员可以重写android.app.Activity类的方法从而使自定义的Activity在状态改变时执行用户所期望的操作。下面创立一个名称为HelloActivity的单Activity的Android应用。14创立Activity的缺省代码工程创立完成后,该类中的缺省代码如下所示:publicclassMainActivityextendsActivity{@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@OverridepublicbooleanonCreateOptionsMenu(Menumenu){getMenuInflater().inflate(R.menu.activity_main,menu);returntrue;}}15启动另外一个Activity一个Activity可以启动另外一个Activity,Activity之间是通过Intent来传递消息的。举个例子说:假设你想让用户看到Internet上的某个图片。当前有一个Activity具有翻开Internet上的某个图片的功能,那么“宿主Activity〞只需将请求信息放到一个Intent对象里面,并把它传递给startActivity()或startActivityForResult()然后浏览器就会显示指定link的图片。而当用户按下BACK键的时候,宿主Activity又会再一次的显示在屏幕上。16启动Activity方式一个Activity可以启动另外一个Activity,在这里启动的Activity被称为〞宿主Activity〞,被启动的Activity被称为“随从Activity〞。有三种方式来启动另外一个Activity:启动同一个Application的Activity启动不同Application的Activity启动不同apk下的Activity17启动不同的Application下的Activity实例5-1启动不同Application的Activity18启动不同APK下的Activity这种方式〔启动不同APK下的Activity〕一般用来启动Android系统提供的Activity。实例5-2启动一个Android系统提供的“浏览网页〞ActivitypublicclassMainActivityextendsActivity{publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Uriuri=Uri.parse("://baidu");Intentintent=newIntent(Intent.ACTION_VIEW,uri);startActivity(intent);}}19Activity启动模式Android支持standard、singleTop、singleTask和singleInstance四种启动模式。可以通过AndroidManifest.xml文件中的<activity>元素的launchMode属性来配置Activity的启动模式。例如下面的语句指定“ActivityMain“这个Activity的启动模式为singleTask:<activityandroid:name="ActivityMain"android:launchMode="singleTask"></activity>20设置Activity许可同API一样,Android系统开放了许多的底层应用〔如ACTION_CALL〕供用户调用。Android系统会在运行时检查该用户程序是否有权限调用该底层应用,这时需要设置Activity许可才能运行相应的应用。需要通过清单文件设置Activity的许可,否那么程序运行出现错误。例如:<uses-permissionandroid:name="android.permission.CALL_PHONE"></uses-permission>2122本节内容什么是AndroidActivity的消息传递22Activity间的消息传递Android使用Intent〔意图〕在不同的Activity之间传递消息。Intent对象描述了应用中一次操作的动作、数据和附加数据,系统通过该对象的描述调用对应的应用。Intent提供了多个Activity之间进行交互的方式,应用程序可通过startActivity方法指定相应的Intent对象来启动另外一个Activity。23

Bundle

如果要传递自定义的数据时例如将当前Activity的运行状态传递给下一个Activity,可使用Bundle来协助完成。Bundle对象可被理解成一个哈希表,该映射表建立了关键字〔标识〕与其值〔传递的数据〕的映射关系通过Bundle类的putXXX(Key,Value)方法将数据封装到Bundle对象中,如putString(Stringkey,Stringvalue)。通过Bundle的getXXX(Stringkey)方法取得关键字对应的数据。24

使用Intent和Bundle在Activity间传递数据

“宿主Activity“端的流程1〕首先创立一个Intent和Bundle对象,其中Bundle用于存储传递的数据; 2〕然后使用Bundle的put方法输入要传递的数据; 3〕将要传递的数据压入Intent中; 4〕启动“随从Activity“。“随从Activity“端的流程1〕接收“宿主Activity“的Intent;2)传递获得传入的Bundle对象;3)使用Bundle的get方法获取要传递的数据。2526本节内容什么是AndroidActivity应用26

Activity应用〔续〕

【实例5-4】实现Activities间的消息传递。该实例包含了两个Activity:MainActivityMainActivity通过Bundle绑定单项选择按钮值将当前被选中的单项选择按钮值传送给SupplActivity。 myintent.putExtras(mybundle); /*将数据封装到Intent对象中,通过该Intent对象将数据传送给相应的Activity*/ MainActivity.this.startActivity(myintent);27

Activity应用〔续〕

SMainActivity启动SupplActivity,并传递给SupplActivity包含RadioButton值的Intent对象,接着SupplActivity通过getIntent方法获取从MainActivity传过来Intentmyintent=this.getIntent();//获取Activity传递的IntentBundlemybundle=myintent.getExtras();//获取Intent的Bundle对象,该对象记录了传送的数据值

}28

Activity应用

该程序,选中“Chinese〞单项选择按钮,然后点击“StartSupplActivity〞按钮〔左图所示〕。之后,会看到SupplActivity被启动,

温馨提示

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

评论

0/150

提交评论