Activity 生命周期 ——各种情况测试

首先上个官方图:http://developer.android.com/reference/android/app/Activity.html


程序两个Activity:



1、Activity 的普通跳转:


有图可见,

1、启动app。

会调用onCreate(初始化Activity),onStart(显示Activity),onResume(到这一个方法用户才能和Activity进行交互)。

2、点击按钮跳转到Activity2。

首先会调用Activity1的onPause,然后再调用Activity2的onCreate,onStart,onResume,至此显示Activity2,最后调用Activity1的onStop。

此时栈中有两个Activity。

3、点击返回键。

首先调用Activity2的onPause,等待Activity1显示,然后再调用Activity2的onStop,再调用onDestroy,把Activity2移出栈顶。

4、再次点击返回键。

onPause,onStop,onDestroy,把Activity1移出栈顶。

2、两个Activity 相互跳转


1、启动app。

栈顶存在Activity1.

2、点击按钮跳到Activity2。

此时栈顶是Activity2,栈底是Activity1.

3、点击按钮跳到下一个Activity。

此时栈中有3个Activity。

4、点击返回。

栈顶的Activity3销毁,显示Activity2.

5、点击返回。

Activity2销毁。

6、点击返回。

退出。

3、在显示Activity的情况下,直接返回桌面


在显示一个Activity的情况下,点击home返回桌面的时候,Activity并没有销毁。原理是一样的,只是显示了一个桌面Activity。

4、调用 finish()


在执行finish方法的时候,并不会马上销毁Activity,而是执行一系列的生命周期,onPause,等待其它Activity启动,然后onStop,onDestroy。


代码:

MainActivity
package com.example.lifecycleactivity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {
	private Button btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.e("test", "LifeCycleActivity1====onCreate");
        
        btn = (Button) this.findViewById(R.id.button1);
        btn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View arg0) {
				startActivity(new Intent(MainActivity.this, SecondActivity.class));
			}
		});
    }

	@Override
	protected void onDestroy() {
		Log.e("test", "LifeCycleActivity1====onDestroy");
		super.onDestroy();
	}

	@Override
	protected void onPause() {
		Log.e("test", "LifeCycleActivity1====onPause");
		super.onPause();
	}

	@Override
	protected void onRestart() {
		Log.e("test", "LifeCycleActivity1====onRestart");
		super.onRestart();
	}

	@Override
	protected void onResume() {
		Log.e("test", "LifeCycleActivity1====onResume");
		super.onResume();
	}

	@Override
	protected void onStart() {
		Log.e("test", "LifeCycleActivity1====onStart");
		super.onStart();
	}

	@Override
	protected void onStop() {
		Log.e("test", "LifeCycleActivity1====onStop");
		super.onStop();
	}
}

SecondActivity
package com.example.lifecycleactivity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class SecondActivity extends Activity {
	private Button btn_nextActivity;
	private Button btn_callFinish;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
		Log.e("test", "LifeCycleActivity2====onCreate");
		
		btn_nextActivity = (Button) this.findViewById(R.id.button1);
		btn_nextActivity.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				startActivity(new Intent(SecondActivity.this, MainActivity.class));
			}
		});
		
		btn_callFinish = (Button) this.findViewById(R.id.button2);
		btn_callFinish.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				finish();
			}
		});
	}

	@Override
	protected void onDestroy() {
		Log.e("test", "LifeCycleActivity2====onDestroy");
		super.onDestroy();
	}

	@Override
	protected void onPause() {
		Log.e("test", "LifeCycleActivity2====onPause");
		super.onPause();
	}

	@Override
	protected void onRestart() {
		Log.e("test", "LifeCycleActivity2====onRestart");
		super.onRestart();
	}

	@Override
	protected void onResume() {
		Log.e("test", "LifeCycleActivity2====onResume");
		super.onResume();
	}

	@Override
	protected void onStart() {
		Log.e("test", "LifeCycleActivity2====onStart");
		super.onStart();
	}

	@Override
	protected void onStop() {
		Log.e("test", "LifeCycleActivity2====onStop");
		super.onStop();
	}
}

记得注册Activity。










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值