博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【学习笔记】Android Activity
阅读量:2134 次
发布时间:2019-04-30

本文共 2216 字,大约阅读时间需要 7 分钟。

本部分内容参考。

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类的文档中查到,。

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()。

转载地址:http://fpugf.baihongyu.com/

你可能感兴趣的文章
composer安装YII
查看>>
Sublime text3快捷键演示
查看>>
sublime text3 快捷键修改
查看>>
关于PHP几点建议
查看>>
硬盘的接口、协议
查看>>
VLAN与子网划分区别
查看>>
Cisco Packet Tracer教程
查看>>
02. 交换机的基本配置和管理
查看>>
03. 交换机的Telnet远程登陆配置
查看>>
微信小程序-调用-腾讯视频-解决方案
查看>>
phpStudy安装yaf扩展
查看>>
密码 加密 加盐 常用操作记录
查看>>
TP 分页后,调用指定页。
查看>>
Oracle数据库中的(+)连接
查看>>
java-oracle中几十个实用的PL/SQL
查看>>
PLSQL常用方法汇总
查看>>
几个基本的 Sql Plus 命令 和 例子
查看>>
PLSQL单行函数和组函数详解
查看>>
Oracle PL/SQL语言初级教程之异常处理
查看>>
Oracle PL/SQL语言初级教程之游标
查看>>