【学习笔记】Android Activity

本部分内容参考这里


manifest

声明activities

需要在manifest文件中的<application> element中增加<activity> element。<activity>的属性中,仅有android:name是必须的,这个属性即为这个activity对应的java类。

publish过的app,activity的名称是不能改变的。参考这里

<activity> 的属性参考这里


声明intent filter

intent filter指明了activity可以执行的任务。<intent-filter> element的属性参考这里。<intent-filter>必须包含<action> element。

android预定义的action可以在Intent类的文档中查到,API27


Lifecycle callbacks

注意,activity在android系统中,有get/lost focu和is/not visible两种状态类别.

onCreate()

必须实现这个函数。

所有仅需执行一次的初始化过程。


onStart()

activity变得可见时调用此函数。注册BroadcastReceiver。


onResume()

activity此时开始与用户交互,activity停留在该函数中直到失去用户交互。

由于activity将在Resume state和Pause state之间切换,android在每次切换到Resume state时,都将调用onResume()函数。在onResume()函数中可对某些资源进行重新获取或者初始化。这些资源应当在Pause state中得到释放。


onPause()

activity进入Pause state,释放资源。在onPause()中不要执行过于heavy或者耗时的操作,例如访问数据库或者网络,这些工作在onStop()中进行。

activity在进入Pause state后不是立即进入Stop state,而是取决于当时的情形。实际上进入Pause state后,activity可能仍可见,此时若重新变成焦点,那么android将调用onResume()来还原。当activity从可见变为不可见,那么onStop()将会被调用。


onStop()

当activity不可见时,将进入Stopped state。此时释放绝大多数资源,并且进行访问数据库等操作。但是android系统会通过onRestart()重新进入activity,此时无需对onResume()之前的数据进行重新初始化,因为android会在Stopped state时自动保存。

onDestroy()

在终止前的最后调用。可以使用isFinishing()来判断是主动退出还是系统终止。有时当设备冲竖直状态切换到水平状态时,android系统也会调用onDestroy()并立即调用onCreate()。


在Activity之间切换

使用startActivity()或者startActivityForResult()函数切换到一个新的activity上,无论采用哪种,都需要提供一个Intent对象。


若不需要有返回数据,则使用startActivity()。

若需要从activity中获得处理的数据,那么使用startActivityForResult()函数,并提供一个int类型的标识符。在被调用的activity返回之后,通过onActivityResult()函数获取之前所需的数据。onActivityResult()函数看起来是需要一个activity自行重写的。


在Activity A启动Activity B的过程中,activity的life cycle如下

(1)A的onPause()函数被调用。

(2)B的onCreate(), onStart(), onResume()函数被调用。

(3)当A在屏幕上不可见时,A的onStop()函数被调用。


一个activity终止有多种情况,当android系统由于资源调度而终止了处于stop状态的activity时,android会保存一份数据,称为instance state。这个instance state是一个Bundle对象。但是默认的行为提供的功能非常有限,为了能够实现activity在重建时能够恢复数据,需要使用onSaveInstanceState()函数和ViewModel类,参考这里。重写onSaveInstanceState()时需要显式调用super的onSaveInstanceState()以保存view。一般要求每个View对象都有明确的android:id。


恢复activity state。恢复时android向onCreate()和onRestoreInstanceState()函数提供之前存储的Bundle对象。若是新创建的avtivity而非恢复的,那么此Bundle对象是null。在onCreate()中需要最先调用super的onCreate()函数。推荐使用onRestoreInstanceState(),此时无需检测Bundle对象是否是null。需要最先调用super的onRestoreInstanceState()。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值