Activity基础知识
在activity、service、broadcastreciver、content provider四大应用程序组件中,Activity是最常用的,也是必须掌握的一个组件。下面是一些有关activity的基础知识:
一、Activity创建:activity被放入堆栈,必须实现Activity子类以及一系列的返回方法,如onCreate()
二、启动activity:
1.startActivity()启动activity并传给activity一个描述意图的intent。
2.setActivityForResult()启动activity并实现onActivityResult()返回方法。
当activity执行结束,会在onActivityResult方法中返回一个带有结果的intent。
三、关闭activity:
1.finish():关闭当前activity;
2.finishActivity():强制关闭用startActivityForResult(Intent,int)打开的另一个activity
四、Activity的生命周期(7个生命周期函数)
1.onCreate():Activity第一次被创建时调用。在该方法中要执行:设置布局文件,为控件设置监听器等。
2.onStart():Activity能够被看到的时候会调用该方法。
3.onRestart():重新启动Activity。
4.onResume():Activity能够获得用户焦点时(用户可以在Activity上操作时)调用该方法。
5.onPause():暂停当前运行的Activity,该方法保存当前Activity的数据,当回复到该Activity时,可以获取数据进行恢复。
6.onStop():当Activity对用户不可见时调用该方法。
7.onDestroy();该方法执行场景:(1)在代码中明确调用了finish()方法。(2)当Andriod的系统资源不够用时。
下图是生命周期详细图解:
Activity有三个关键的循环:
1. 整个的生命周期,从onCreate(Bundle)开始到onDestroy()结束。Activity在onCreate()设置所有的“全局”状态,在onDestory()释放所有的资源。
例如:某个Activity有一个在后台运行的线程,用于从网络下载数据,则该Activity可以在onCreate()中创建线程,在onDestory()中停止线程。
2. 可见的生命周期,从onStart()开始到onStop()结束。在这段时间,可以看到Activity在屏幕上,尽管有可能不在前台,不能和用户交互。在这两个接口之间,需要保持显示给用户的UI数据和资源等,
例如:可以在onStart中注册一个IntentReceiver来监听数据变化导致UI的变动,当不再需要显示时候,可以在onStop()中注销它。onStart(),onStop()都可以被多次调用,因为Activity随时可以在可见和隐藏之间转换。
3. 前台的生命周期,从onResume()开始到onPause()结束。在这段时间里,该Activity处于所有 Activity的最前面,和用户进行交互。Activity可以经常性地在resumed和paused状态之间切换,
例如:当设备准备休眠时,当一个 Activity处理结果被分发时,当一个新的Intent被分发时。所以在这些接口方法中的代码应该属于非常轻量级的。