基于安卓手持设备的手机应用编程——Activity类

coursera上Programming Mobile Applications for Android Handheld Systems: Part 1的课程笔记。

本讲的内容为Activity类介绍。

*概述

Activity类是与用户交互的基础类,Activity提供可视化的接口,这样用户能够和应用交互。Activity需要模块化,每一个Activity能够支持单一的焦点事件,比如浏览邮件信息或者在屏幕中显示日志。

通过支持任务回溯概念来管理用户交互的特定Activity,并保证Activity在任务回溯栈中出入栈时被挂起和重启。

在Android中,Task是一系列相关Activity的组合,通常当用户在home界面启动一个新应用时,一个Task被创建。任务回溯栈则类似调用栈的概念。

Activity生命周期:
当Activity处于Resumed或Running状态时,它相对用户可见,用户可以与之交互。
当Activity处于Paused状态时,它可以相对用户可见,但用户不能与之交互。在此状态下Activity可能被Android终止。
当处于Stopped状态时Activity变为不可见状态,Android终止Activity直到用户重新回到这个Activity。

Android提供了一系列方法供调用,为onCreate,onStart,onResume,onPause,onStop,onDestroy,onRestart。

Android不一定总执行onStop方法,因为应用进程可能被直接终止。

应用在onStart到onStop之间的周期范围内可见。


下图为常见的Activity生命周期图。



*Activity生命周期中的方法:
onCreate()
onCreate方法在Activity被首次被创建时调用,主要作用是初始化Activity。
1、调用super.onCreate()
2、设置Activity的内容视图
3、保持和配置UI视图

onRestart()
onRestart方法在Activity被停止后又重新启动时调用。

onStart()方法完成在用户可见的形式下的行为。比如在阅读邮件应用里的更新未读信息队列操作。

onResume()方法,当Activity可见并将开始与用户交互时调用。如开始动画或播放背景音乐。

onPause()方法,当Activity即将失去焦点时被调用。在这个方法中可以结束一些前台行为如结束动画。此外用户编辑的保留状态信息也在这个方法中保存。

onStop()方法当Activity对用户不可见时调用。因为Activity可能重新启动,这里可以缓存状态信息。onStop方法可能不会被调用到,比如当内存不够时Android直接终止应用进程,所以应将存储数据的操作放在onPause方法中。

onDestroy()方法调用时间是Activity即将被销毁时。内容是释放Activity的资源,如私有线程。



*如何在程序中启动Activity:
创建一个intent对象来指定要启动的Activity,然后将其传递给startActivity()或startActivityForResult()方法。其中startActivityForResult()方法会得到在被调用Activity中onActivityResult()方法中的值。

Activity.setResult()方法用于设置被调用Activity的返回值。

*更改配置
当设备的配置在运行时改变,Android会终止当前进程,并使用合适的资源重启它,因此要保证生命周期方法中的代码高效。
对此,当发生这种改变时,你可以用一个Java对象来保存状态信息,方法是重写onRetainNonConfigurationInstance(),这个方法在onStop和onDestroy间被调用,而它返回的对象将在Activity被重建时通过getLastNonConfigurationInstance获得,但现在这种方法不被提倡;或者,你可以手动处理配置改变,在AndroidManifest.xml文件中声明常被改变的配置,这样当配置在运行时改变,Activity会受到对onConfigurationChanged()方法的调用,带有新配置的Configuration对象会作为参数传入。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值