Activity的生命周期和启动模式
Android开发最吸引人的魅力在于随随便便拖几个控件,跑一下代码,就能看见在页面上面显示的效果。其中Activity的强大就体现出来了。楼主以前做Web开发,被2000多行的Js代码弄的头昏眼花。后来偶尔一次机会,看见Android拖控件到显示的视频,被吸引着入了门,走上了Android的不归路。做Android开发的这几年,本着能抄代码就不自己动手的精神,走了不少弯路。现在配合多个学习书籍,总结经验,理解原理性的东西,方便下次抄袭(^_^)。
废话不多说,上Activity的生命周期图(这个在面试的时候经常会被问到哎,真不知道有什么可以问的)
Activity的生命周期
图片原地址(http://cs.szpt.edu.cn/android/guide/components/activities.html)
Activity从创建到销毁,正常经过的生命流程就是onCreate->onStart->onResume->onPause->onStop->onStop->onDestroy。
但是筒子们在开发的时候,偶会会见到不走寻常路的。
生命周期分析
onCreate:Activity正在被创建,是生命周期的第一个方法,一般初始化的工作都是在这里完成的,比如setContentView加载layout、getIntent获取上个页面传递过来的数据、findViewById、setListener等
onRestart:Activity在重启。一般情况下当应用程序从后台程序变成前台程序的时候,会执行onRestart方法。
onStart:Activity正在启动,Activity处在系统后台可见,用户还没法操作界面上的元素。
onResume:Activity可见了,并且出现在前台。与onStart的区别在于:onStart的时候,Activity处在后台,onResume的时候Activity才显示到前台。
onPause:Activity处在暂停状态,用户没法操作。
onStop:Activity即将停止,可以做微量的回收操作,但不能够太耗时。
onDestroy:Activity即将销毁,可以做回收工作和资源的释放。一般把注册的广播接受者取消注册unregisterReceiver、handler.removeMessages、Timer的cancel等。
测试代码
package com.chunjiangchao.demo; import android.app.Activity; import android.os.Bundle; import android.util.Log; public class MainActivity extends Activity { private static final String tag = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.i(tag, "onCreate"); } @Override protected void onStart() { super.onStart(); Log.i(tag, "onStart"); } @Override protected void onRestart() { super.onRestart(); Log.i(tag, "onRestart"); } @Override protected void onResume() { super.onResume(); Log.i(tag, "onResume"); } @Override protected void onPause() { super.onPause(); Log.i(tag, "onPause"); } @Override protected void onStop() { super.onStop(); Log.i(tag, "onStop"); } @Override protected void onDestroy() { super.onDestroy(); Log.i(tag, "onDestroy"); } }
AndroidManifest.xml中的配置
<activity android:name="com.chunjiangchao.demo.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
正常流程测试:
启动Activity,然后点击后退键销毁,生命周期如下:
启动Activity后,点击Home键
旋转屏幕的生命周期
未完待续(还是夜晚写吧,上午真的造不出来啊)