Android Activity及生命周期
2014-10-27 10:50
225 查看
第二篇技术文档来了解下Activity。
什么是Activity?
activity 是android最常见的组件,是android 四大常用组件之一。activity是人机交互的界面,每一个actiivty都表示一个屏幕,应用程序会把它呈现给用户,应用程序越负责,需要的屏幕越多。Activity的生存期
每一个Activity的状态是由它在Activity栈中所处的位置所决定的,Activity栈是当前所有正在运行的Activity的先进后出的集合。当一个新的Activity启动时,它就变为Activity状态,并被移动到栈顶。
如果用户使用返回键返回到了刚才的Activity或者当前Acivity被关闭了,那么栈中下一个Activity就会移动到栈顶,激活成活动状态。
Activity的状态
随着Activity的创建与销毁,在栈中移出移进会经历4个状态。活动状态
当一个Actiivty位于栈顶的时候,它是可见的并且具有焦点的前台Activity。android将会不惜一切代价来保持它处于活动状态,并根据需要来销毁下面部分的Activity来保证这个Activity拥有它所需要的资源。暂停状态
在某些情况下,activity是可见的,但是没有获得焦点,此时它就处于暂停状态。当一个透明或者非全屏的Activity位于该Activity之前时就是暂停状态。当Activity被暂停的时候,它仍然会被当作近似于活动状态的状态,但是不能接收用户的输入事件。在极端的情况下,android也会终止暂停的Activity,为活动状态的Activity获取资源。
停止状态
当一个Activity不可见的时候,它就处于停止状态。此时Activity仍然会停留在内存中,保存所有的状态信息,然而android系统在其他地方需求使用内存的时候,它就会成为首要的候选对象。在一个Activity停止的时候,保存数据和当前的UI状态以及停止任何关键操作都是很重要的。
非活动状态
当一个Activity被终止之后,在启动它之前它就处于非活动状态。处于非活动状态的Activity已经从Activity栈中移除了,因此在他们可以被显示和使用之前,需要被重新启动。状态的转化是非确定性的,完全由android内存管理器处理。Android首先会关闭包含非活动状态Activity的应用程序,接着是停止的应用程序。只有极端情况下,才会销毁暂停的应用程序。
Activity的生命周期
为了保证Activity可以对状态改变做出反应,Android提供了一系列时间处理程序,当Actiivty在完整的,可见的和活动的生存期之间转化时,它们就会被触发。了解一个应用的生命周期,最好手动实践一下
package com.example.activitytest; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity { private static final String TAG = "testActivity"; private Button button; // activity 创建初始调用 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.i(TAG, "onCreate() called."); // TODO 初始化一个Activity 并且填充UI button = (Button) findViewById(R.id.button); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(MainActivity.this, TranslucentActivity.class)); } }); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); Log.i(TAG, "onRestoreInstanceState() called."); // TODO Activity被系统杀死后再重建时被调用. // 例如:屏幕方向改变时,Activity被销毁再重建;当前Activity处于后台,系统资源紧张将其杀死,用户又启动该Activity. // 这两种情况下onRestoreInstanceState都会被调用,在onStart之后. } // 当activity 从停止状态到活动状态调用 @Override protected void onRestart() { super.onRestart(); Log.i(TAG, "onRestart() called."); } // 当activity创建或者从停止状态到活动状态调用 @Override protected void onStart() { super.onStart(); Log.i(TAG, "onStart() called."); } // 当activity创建或者从停止状态到活动状态调用 @Override protected void onResume() { super.onResume(); Log.i(TAG, "onResume() called."); } // 当activity处于暂停状态的时候 调用 @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); Log.i(TAG, "onSaveInstanceState() called."); } // 当activity处于暂停状态的时候 调用 @Override protected void onPause() { super.onPause(); Log.i(TAG, "onPause() called."); //TODO 在onPause方法中也可能进程会被终止所以有必要的花 也要保存所有的编辑或者状态改变 } // 退出当前Activity或者跳转到新Activity时被调用 @Override protected void onStop() { super.onStop(); Log.i(TAG, "onStop() called."); // TODO 挂起不需要的UI更新,线程或处理 // 当activity不可见时,保存所有的编辑或者状态改变,因为在调用这个方法后,进程可能会被终止 } // 退出当前Activity时被调用,调用之后Activity就结束了 @Override protected void onDestroy() { super.onDestroy(); Log.i(TAG, "onStop() called."); // TODO 清理所有的资源,包括线程 关闭数据库连接等 } }
当项目刚启动的调用的是 onCreate() > onStart() > onResume() ,退出Actiivty调用的是onPause()>onStop()>onDestory()方法,结束当前Activity。
点击home键,Activity处于停止状态 调用的是onPause()>OnSaveInStanceState()>onStop(), 从停止状态返回到活动状态 调用的是onRestart()>onStart()>OnResume()
启动一个透明的Activity 当前activity处于暂停状态 调用的是OnPause>OnSaveInStanceState(),从暂停的状态返回到活动状态 调用的是OnResume()
当前Activity处于暂停状态或者停止状态,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate() > onStart() > onResume()。
参考书:Android 4 高级编程第三版
相关文章推荐
- Android:Activity的生命周期
- 新书内容连载(2):Android中的Activity的生命周期
- Android Activity生命周期
- Android Activity生命周期具体内容概述
- Android的七巧板Activity之一 Activity的生命周期 推荐
- Android启动过程 && Activity生命周期 && Activity开机自启动 && this与getBaseContext && Activity的singleTask类型
- Android之旅--Activity生命周期
- Android Activity生命周期总结
- Android学习之 Activity 生命周期(LifeCycle)
- 新书内容连载(2):Android Activity的生命周期
- android之activity生命周期
- Android 之 Activity 生命周期
- Android中Activity的生命周期
- 转:Android activity 生命周期--灰太狼大王
- Android中Activity的生命周期
- android中Activity的生命周期(附测试源码)
- android之activity生命周期示例
- Android Activity的生命周期
- Android---Activity生命周期状态
- Android中Activity生命周期