Android API Guides 阅读笔记(2)----Activity

Activity 是应用程序的必备组件,它提供了一个屏幕,用户可与之互动,以做一些事情,如拨打电话,拍照,发送电子邮件,或查看地图。每个Activity 会提供一个窗口,在其中绘制它的用户界面。通常窗口会填满整个屏幕,但也有可能比屏幕小并且浮动在其他窗口之上。
通过阅读这节内容,将会了解到:

  • 一个应用程序通常由许多Activity组成,其中一个Activity是程序入口Activity(用户点击程序图标,首先进入的Activity),Activity之间通过Intent进行跳转,通过后退栈(back stack)进行保存与取出,由此,引入Activity生命周期的概念,Activity的生命周期回调方法(onCreate(),onPause(),onDestory(),etc)由Android系统调用,开发者在这些回调方法中写入一定的逻辑,然后等待系统根据用户的操作进行调用

  • 默认程序入口Activity的清单文件里,< intent-filter >中的< action >元素指定当前Activity为应用程序的入口,< category >元素指定当前Activity应该放在Android系统应用程序列表界面(就是启动图标,用户点击就启动这个Activity)

  • 其他Activity通过Intent可以启动一个Activity,调用startActivity()或者startActivityForResult()(执行完成返回结果,例如选择系统相册中的照片过程),通过调用finish()可以关闭当前Activity

  • Activity的生命周期:

    • onCreate():当一个Activity首次被创建时(之前调用过onDestroy()使之销毁)调用

    • onStart():当Activity对用户可见的时候调用

    • onResumed():在用户与Activity交互之前调用,此时的Activity位于栈顶

    注: 以下的回调方法为“之后可被kill”的方法(调用之后系统可以将这个Activity销毁),即当系统出现紧急情况(内存严重不足)时,可以不调用以下的方法直接结束进程,因此,对于数据和状态的保存,需要考虑放在哪个方法里比较合适

    • onPause():当系统将要启动其他的Activity时调用,此方法通常用于保存当前Activity中的状态和数据(如果系统内存紧急回收,将会调用onPause(),可能不会调用onStop()和onDestroy(),所以保存当前状态的操作应该在onPause()中执行)、

    • onStop():当Activity不再对用户可见时调用

    • onDestroy():在Activity被销毁之前调用,当代码中调用了finish()时也会调用此方法

    注意,在做任何事情之前,实现这些生命周期方法,必须始终调用父类的实现,即,调用super.onCreate();等.

  • Activity当前状态保存:当一个Activity处于paused(onPause())或者stoped(onStop())时,当前Activity的状态依然保留(用户操作过的改变或填写的一些内容依然存在),因为这时的Activity依然驻留在内存中,因此当这个Activity回到屏幕前时,之前的改变还在,但是当这个Activity被系统销毁后,这些数据就都不在了,因此,要想让Activity被销毁后重新创建时恢复之前的状态,就需要使用onSaveInstanceState()方法,系统会在Activity销毁前调用此方法,如果用户是点击back button按钮离开当前页面,则系统不会调用onSaveInstanceState()方法,只有在系统之前调用了onStop()或者onPause()时,才会在接下来调用onSaveInstanceState()
    视图组件中有Id属性的组件会自动保存状态,而没有Id属性的组件则不能保存状态,可以通过在View布局中对组件设置属性:savaEnabled来设置组件是否可以保存状态,或者通过调用其setSaveEnable()方法来设置

  • onPause()中保存数据和在onSaveInstanceState()保存数据的区别:在onSaveInstanceState()中保存的应该是短暂的UI变化,例如EditText中暂存的内容,或者CheckBox中暂存的选项,而在onPause()中保存的应该是需要保存到database中的数据

  • 当设备的配置参数改变时(例如屏幕的方向,设备的语言,键盘的可用性),系统会销毁当前Activity并立即重新创建当前Activity(先调用onDestroy(),接着立即调用onCreate())

  • 从Activity–A中启动Activity–B的过程:

    1. Activity–A调用onPause()

    2. Activity–B调用onCreate(),onStart(),onResume()

    3. Activity–A调用onStop()(等待一段时间后如果不再返回Activity–A,接着调用onDestroy())

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值