Activity
Activity是这样一个程序组件,它为用户提供一个用于任务交互的画面。
一个应用程序通常由多个activity组成,它们彼此保持弱的绑定状态。典型的,当一个activity在一个应用程序内被指定为主activity, 那么当程序第一次启动时,它将第一个展现在用户面前。为了展现不同的内容,每一个activity可以启动另外一个。 每当一个新的activity被启动,那么之前的将被停止。但系统将会把它压入一个栈(“back stack”即后退栈),当一个新的activity启动,它将被 放到栈顶并获得用户焦点。后台栈遵循后进先出的栈机制。所以当用户完成当前页面并按下返回按钮时,它将被pop出栈(并销毁),之前的activity将被恢复。
当一个activity因为另一个activity的启动而被停止,那么其生命周期中的回调方法,将会以状态改变的形式被调用。 activity通过它自身状态的改变可以收到多个回调方法。当系统创建,停止,恢复,销毁它的时候。并且每个回调方法都给你做相应处理工作的机会。 例如,当停止的时候,你的activity应当释放比较大的对象,例如网络连接,数据连接。当你的activity恢复时,你可以请求必须的资源并恢复一些被打断的动作。 这些状态事务的处理就构成了activity的生命周期。
如何在一个应用程序中定义多个Activity?
1.创建一个继承自Activity或其子类的类,
2.在配置文件中声明activity
Activity的切换
生成一个意图对象(Intent),调用setClass(context, class)方法设置所要启动的Activity,Activity是Context的子类,所以可以这样写intent.setClass(FirstActivity.this, SecondActivity.class);
1.调用startActivity(intent)方法启动Activity;
2.调用startActivityForResult(intent ,1)方法启动Activity并接受第二个Activity回传回来的数据。
在第一个页面中用onActivityResult(int requestCode, int resultCode, Intent data)方法来接受数据。
在第二个页面中用setResult(int resultCode, Intent data)方法来设置回传的数据。
back stack 后退栈:存放的是Activity对象;
应用程序显示的是BackStack顶部的Activity,点击后退按钮,移除顶部的Activity。
Activity之间传递数据
Intent是Android应用程序当中的组件之一,Intent就是对意图的抽象。
Intent当中最重要的内容是action与data,action代表切换的动作,data代表切换涉及到哪两个Activity以及传递的数据。
使用putExtra()系列方法向Intent对象当中存储数据,使用getXXXExtra()系列方法从Intent对象当中取出数据。
Activity的生命周期函数:
方法 | 描述 | 之后可否被杀死? | 下一个方法 |
---|---|---|---|
onCreate() | activity第一次被创建时调用。在这里你应该完成所有常见的静态设置工作——创建view、绑定list数据等等。 本方法传入一个包含了该activity前一个状态的Bundle对象(如果之前已捕获了状态的话,详见后面的保存Activity状态)。
下一个回调方法总是onStart()。 |
否 | onStart() |
onRestart() | activity被停止后、又再次被启动之前调用。
下一个回调方法总是onStart() |
否 | onStart() |
onStart() | activity要显示给用户之前调用。
如果activity进入前台,则下一个回调方法是onResume();如果进入隐藏状态,则下一个回调方法是onStop()。 |
否 | onResume() 或 onStop() |
onResume() | activity开始与用户交互之前调用。这时activity是在activity栈的顶端,用户可以向其中输入。
下一个回调方法总是onPause()。 |
否 | onPause() |
onPause() | 当系统准备启动另一个正在恢复的activity时调用。这个方法通常用于把未保存的改动提交为永久数据、停止动画播放、以及其它可能消耗CPU的工作等等。 它应该非常迅速地完成工作,因为下一个activity在本方法返回前是不会被恢复运行的。
如果activity返回前台,则下一个回调方法是onResume();如果进入用户不可见状态,则下一个是onStop() |
可以 | onResume() 或 onStop() |
onStop() | 当activity不再对用户可见时调用。原因可能是它即将被销毁、或者其它activity(已有或新建的)被恢复运行并要覆盖本activity。
如果activity还会回来与用户交互,则下一个回调方法是onRestart();如果这个activity即将消失,则下一个回调方法是onDestroy() |
可以 | onRestart() 或 onDestroy() |
onDestroy() | 在本activity被销毁前调用。这是activity收到的最后一个调用。 可能是因为activity完成了工作(有些人在这里调用finish()), 也可能是因为系统为了腾出空间而临时销毁activity的本实例。 可以利用isFinishing() 方法来区分这两种情况。 | 可以 | 无 |
生命周期函数是由Android操作系统来调用的:
两个Activity之间切换的过程(第一个Activity打开第二个Activity,再返回到第一个Activity)
MainActivity onCreate
MainActivity onStart
MainActivity onResume
//激活第二个Activity
MainActivity onPause
SecondActivity onCreate
SecondActivity onStart
SecondActivity onResume
MainActivity onStop
//返回第一个Activity
SecondActivity onPause
MainActivity onRestart
MainActivity onStart
MainActivity onResume
SecondActivity onStop
SecondActivity onDestroy
Activity对象的状态:
Resumed:Activity对象处于运行状态
Paused:另一个Activity位于前端,但是本Activity还可见,并不一定会释放所占用的内存
Stoped:另一个Activity位于前端,完全遮挡本Activity,并不一定会释放所占用的内存
成对儿的生命周期函数:
onCreate 与 onDestroy方法是一对;
onStart 与 onStop方法是一对;
onResume 与 onPause方法是一对;
————————————————————————————————————————————————————————————