`

Activity生命周期

 
阅读更多





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时已经被系统杀死,从而导致信息丢失。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics