Activity的生命周期图如上所示
用一个实例来测试:
1、重写Activity的onCreate、onStart、onResume、onPause、onStop、onDestroy、onRestart
2、MainActivity 有两个按钮btn1、btn2,点击btn1跳转到SecondActivity,点击btn2跳转到ThirdActivity,用Log.i()来记录表出这3个Acitivity的生命状态
MainActivity:
package com.test.activitydemo; //import android.R; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.support.v4.app.NavUtils; public class MainActivity extends Activity { public final static String TAG="MainActivity"; private Button btn1; private Button btn2; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.i(TAG, "MainActivity-->onCreate"); btn1=(Button)findViewById(R.id.btn1); btn2=(Button)findViewById(R.id.btn2); btn1.setOnClickListener(listener); btn2.setOnClickListener(listener); } private View.OnClickListener listener=new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Button btn=(Button)v; Intent intent=new Intent(); switch(btn.getId()) { case R.id.btn1: intent.setClass(MainActivity.this, SecondActivity.class); break; case R.id.btn2: intent.setClass(MainActivity.this, ThirdActivity.class); break; } startActivity(intent); } }; @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); Log.i(TAG, "MainActivity-->onDestroy"); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); Log.i(TAG, "MainActivity-->onPause"); } @Override protected void onRestart() { // TODO Auto-generated method stub super.onRestart(); Log.i(TAG, "MainActivity-->onRestart"); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); Log.i(TAG, "MainActivity-->onResume"); } @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); Log.i(TAG, "MainActivity-->onStart"); } @Override protected void onStop() { // TODO Auto-generated method stub super.onStop(); Log.i(TAG, "MainActivity-->onStop"); } }
SecondActivity:
package com.test.activitydemo; import android.app.Activity; import android.os.Bundle; import android.util.Log; public class SecondActivity extends Activity { public final static String TAG="MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); Log.i(TAG, "SecondActivity-->onCreate"); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); Log.i(TAG, "SecondActivity-->onDestroy"); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); Log.i(TAG, "SecondActivity-->onPause"); } @Override protected void onRestart() { // TODO Auto-generated method stub super.onRestart(); Log.i(TAG, "SecondActivity-->onRestart"); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); Log.i(TAG, "SecondActivity-->onResume"); } @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); Log.i(TAG, "SecondActivity-->onStart"); } @Override protected void onStop() { // TODO Auto-generated method stub super.onStop(); Log.i(TAG, "SecondActivity-->onStop"); } }
ThirdActivity:
package com.test.activitydemo; import android.app.Activity; import android.os.Bundle; import android.util.Log; public class ThirdActivity extends Activity { public final static String TAG="MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.avtivity_third); Log.i(TAG, "ThirdActivity-->onCreate"); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); Log.i(TAG, "ThirdActivity-->onDestroy"); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); Log.i(TAG, "ThirdActivity-->onPause"); } @Override protected void onRestart() { // TODO Auto-generated method stub super.onRestart(); Log.i(TAG, "ThirdActivity-->onRestart"); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); Log.i(TAG, "ThirdActivity-->onResume"); } @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); Log.i(TAG, "ThirdActivity-->onStart"); } @Override protected void onStop() { // TODO Auto-generated method stub super.onStop(); Log.i(TAG, "ThirdActivity-->onStop"); } }
Manifest:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.test.activitydemo" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".SecondActivity" android:label="@string/title_activity_second"> </activity> <!-- ThirdActivity以对话框的形式弹出 --> <activity android:name=".ThirdActivity" android:label="@string/title_activity_third" android:theme="@android:style/Theme.Dialog"> </activity> </application> </manifest>
当activity状态为onPause时,不适于进行太耗时的操作;
如果要保存信息,比较安全的做法是当activity在onPause时进行保存,这是因为当activity在onPause、onStop、onDestroy状态时,都有可能被系统杀死,如果在onStop或者onDestroy状态下保存,有可能activity在onPause时已经被系统杀死,从而导致信息丢失。