ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:65.18KB ,
资源ID:2824630      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2824630.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(activity组件.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

activity组件.docx

1、activity组件Activity 的生命周期 和 J2ME 的 MIDlet 一样,在 android 中,Activity 的生命周期交给系统统一管理。与 MIDlet 不同的是安装在 android 中的所有的 Activity 都是平等的。Activity 的状态及状态间的转换 在 android 中,Activity 拥有四种基本状态:1. Active/Runing 一个新 Activity 启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。 2. Paused 当 Activity 被另一个透明或者 Dialog 样式的 Activity 覆盖

2、时的状态。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,所以它仍然可见,但它已经失去了焦点故不可与用户交互。 3. Stoped 当 Activity 被另外一个 Activity 覆盖、失去焦点并不可见时处于 Stop ed 状态。 4. Killed Activity 被系统杀死回收或者没有被启动时处于 Killed 状态。 当一个 Activity 实例被创建、销毁或者启动另外一个 Activity 时,它在这四种状态之间进行转换,这种转换的发生依赖于用户程序的动作。下图说明了 Activity 在不同状态间转换的时机和条件:图 1. Activity 的状态转换 如上所示,A

3、ndroid 程序员可以决定一个 Activity 的“生”,但不能决定它的“死”,也就时说程序员可以启动一个 Activity,但是却不能手动的“结束”一个 Activity。当你调用 Activity.finish() 方法时,结果和用户按下 BACK 键一样:告诉 Activity Manager 该 Activity 实例完成了相应的工作,可以被“回收”。随后 Activity Manager 激活处于栈第二层的 Activity 并重新入栈,同时原 Activity 被压入到栈的第二层,从 Active 状态转到 Paused 状态。例如:从 Activity1 中启动了 Activ

4、ity2,则当前处于栈顶端的是 Activity2,第二层是 Activity1,当我们调用 Activity2.finish() 方法时,Activity Manager 重新激活 Activity1 并入栈,Activity2 从 Active 状态转换 Stoped 状态,Activity1. onActivityResult(int requestCode, int resultCode, Intent data) 方法被执行,Activity2 返回的数据通过 data 参数返回给 Activity1。Activity 栈 Android 是通过一种 Activity 栈的方式来管理

5、 Activity 的,一个 Activity 的实例的状态决定它在栈中的位置。处于前台的 Activity 总是在栈的顶端,当前台的 Activity 因为异常或其它原因被销毁时,处于栈第二层的 Activity 将被激活,上浮到栈顶。当新的 Activity 启动入栈时,原 Activity 会被压入到栈的第二层。一个 Activity 在栈中的位置变化反映了它在不同状态间的转换。Activity 的状态与它在栈中的位置关系如下图所示:图 2. Activity 的状态与它在栈中的位置关系 如上所示,除了最顶层即处在 Active 状态的 Activity 外,其它的 Activity 都

6、有可能在系统内存不足时被回收,一个 Activity 的实例越是处在栈的底层,它被系统回收的可能性越大。系统负责管理栈中 Activity 的实例,它根据 Activity 所处的状态来改变其在栈中的位置。Activity 生命周期 在 android.app.Activity 类中,Android 定义了一系列与生命周期相关的方法,在我们自己的 Activity 中,只是根据需要复写需要的方法,Java 的多态性会保证我们自己的方法被虚拟机调用,这一点与 J2ME 中的 MIDlet 类似。 public class OurActivity extends Activity protecte

7、d void onCreate(Bundle savedInstanceState); protected void onStart(); protected void onResume(); protected void onPause(); protected void onStop(); protected void onDestroy(); 这些方法的说明如下:1. a. i. protected void onCreate(Bundle savedInstanceState) 一个 Activity 的实例被启动时调用的第一个方法。一般情况下,我们都覆盖该方法作为应用程序的一个入口点

8、,在这里做一些初始化数据、设置用户界面等工作。大多数情况下,我们都要在这里从 xml 中加载设计好的用户界面。例如: setContentView(R.layout.main); 当然,也可从 savedInstanceState 中读我们保存到存储设备中的数据,但是需要判断 savedInstanceState 是否为 null ,因为 Activity 第一次启动时并没有数据被存贮在设备中: if(savedInstanceState!=null) savedInstanceState.get(Key); 1. a. i. protected void onStart() 该方法在 onC

9、reate() 方法之后被调用,或者在 Activity 从 Stop 状态转换为 Active 状态时被调用。 ii. protected void onResume() 在 Activity 从 Pause 状态转换到 Active 状态时被调用。 iii. protected void onResume() 在 Activity 从 Active 状态转换到 Pause 状态时被调用。 iv. protected void onStop() 在 Activity 从 Active 状态转换到 Stop 状态时被调用。一般我们在这里保存 Activity 的状态信息。 v. protect

10、ed void onDestroy() 在 Active 被结束时调用,它是被结束时调用的最后一个方法,在这里一般做些释放资源,清理内存等工作。 图 3. 这些方法的调用时机 此外,Android 还定义了一些不常用的与生命周期相关的方法可用: protected void onPostCreate(Bundle savedInstanceState); protected void onRestart(); protected void onPostResume(); Android 提供的文档详细的说明了它们的调用规则。回页首 创建一个 Activity 在 android 中创建一个 A

11、ctivity 是很简单的事情,编写一个继承自 android.app.Activity 的 Java 类并在 AndroidManifest.xml 声明即可。下面是一个为了研究 Activity 生命周期的一个 Activity 实例(工程源码见下载):Activity 文件: public class EX01 extends Activity private static final String LOG_TAG = EX01.class.getSimpleName(); Override public void onCreate(Bundle savedInstanceState)

12、super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.e(LOG_TAG, onCreate); Override protected void onStart() Log.e(LOG_TAG, onStart); super.onStart(); Override protected void onResume() Log.e(LOG_TAG, onResume); super.onResume(); Override protected void onPause() Log.e(LOG_TAG, onP

13、ause); super.onPause(); Override protected void onStop() Log.e(LOG_TAG, onStop); super.onStop(); Override protected void onDestroy() Log.e(LOG_TAG, onDestroy ); super.onDestroy(); AndroidManifest.xml 中通过 节点说明 Activity,将 apk 文件安装后,系统根据这里的说明来查找读取 Activity,本例中的说明如下: 回页首 启动另外一个 Activity Activity.startAc

14、tivity() 方法可以根据传入的参数启动另外一个 Activity: Intent intent =new Intent(CurrentActivity.this,OtherActivity.class); startActivity(intent); 当然,OtherActivity 同样需要在 AndroidManifest.xml 中定义。回页首 Activity 之间通信 使用 Intent 通信 在 Android 中,不同的 Activity 实例可能运行在一个进程中,也可能运行在不同的进程中。因此我们需要一种特别的机制帮助我们在 Activity 之间传递消息。Android 中通过 Intent 对象来表示一条消息,一个 Intent 对象不仅包含有这个消息的目的地,还可以包含消息的内容,这好比一封 Email,其中不仅应该包含收件地址,还可以包含具体的内容。对于一个 Intent 对象,消息“目的地”是必须的,而内容则是可选项。在上面的实例中通

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1