Activity的生命周期

一、acrivity的生命周期(参考:https://developer.android.com/reference/android/app/Activity)
系统中activity用栈进行管理。当一个activity启动运行时被放置在栈顶,先前运行activity被压入栈的下一层,并且直到栈顶的activity退出运行时才能被运行。
一个activity有下面四个状态:
1、 Running(运行)状态:此时位于栈顶。
2、 Paused(阻止)状态:这时activity失去焦点仍然能够被看见(当栈顶的activity没有全部覆盖界面或者为透明状态时),保持着所有的状态数据信息,但是这时的activity不能和用户进行交互,并且可能会由于系统的内存不足而被杀死。
3、 Stopped(停止)状态:这时的activity完全被栈顶的activity覆盖,不能被用户看不到,但是也保持着所有的状态数据,并且只要系统需要内存(不一定是内存不足)就可能被杀死。
4、 Finish(完成)状态:当activity被系统从paused状态或者stopped状态要求完成时,将会把activity从内存中撤销,如果再一次被调用,则会重新启动并加载原先的数据。
下面的图展示了activity的状态转化情况:
在这里插入图片描述
Activity三个关键循环:
1、 完整生命周期:起始于第一次被创建时的onCreate(Bundle)方法,终止于执行onDestroy()方法。
2、 可视生命周期:起始于onStart()方法,终止于onStop()方法。这个周期内activity可以被用户看到但是不能和用户交互。
3、 前置生命周期:起始于onResume()方法,终止于onPause()方法。这个生命周期内的activity能被用户看到并且可以和用户交互。
一般情况下activity的生命周期执行的动作如下图所示:
在这里插入图片描述
二、程序展示
新建两个activity,程序启动时先执行MainActivity.class,再通过MainActivity启动时的onCreate()方法启动InferiorActivity,InferiorActivity启动后再调用MianActivity,在InferiorAcrivity回调MainActivity后执行finish()方法,
代码为:
ManinActivity.java

package com.example.testacitivity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Log.d("MainActivity->onCreate","启动");
		Intent i=new Intent(this,InferiorActivity.class);
		startActivityForResult(i,1);
	}
	@Override
	protected void onStart() {
		// TODO 自动生成的方法存根
		super.onStart();
		Log.d("MainActivity->onStart","启动");
	}
	@Override
	protected void onResume(){
		//TODO 自动生成的方法存根
		super.onResume();
		Log.d("MainActivity->onResume","启动");
		
	}
	@Override
	protected void onPause() {
		// TODO 自动生成的方法存根
		super.onPause();
		Log.d("MainActivity->onPause","启动");
	}
	@Override
	protected void onStop() {
		// TODO 自动生成的方法存根
		super.onStop();
		Log.d("MainActivity->onStop","启动");
	}
	@Override
	protected void onRestart() {
		// TODO 自动生成的方法存根
		super.onRestart();
		Log.d("MainActivity->onRestart","启动");
		
	}
	
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		// TODO 自动生成的方法存根
		super.onActivityResult(requestCode, resultCode, data);
	}
	
	@Override
	protected void onDestroy() {
		// TODO 自动生成的方法存根
		super.onDestroy();
		Log.d("MainActivity->onDestroy","onDestroy");
	}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}
}

InferiorActivity.java

package com.example.testacitivity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;

public class InferiorActivity extends Activity{

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Log.d("InferiorActivity->onCreate","启动");
	}
	@Override
	protected void onStart() {
		// TODO 自动生成的方法存根
		super.onStart();
		Log.d("InferiorActivity->onStart","启动");
	}
	@Override
	protected void onResume(){
		//TODO 自动生成的方法存根
		super.onResume();
		Log.d("InferiorActivity->onResume","启动");
		Intent i=new Intent();
		setResult(RESULT_OK, i);
		finish();
	}
	@Override
	protected void onPause() {
		// TODO 自动生成的方法存根
		super.onPause();
		Log.d("InferiorActivity->onPause","启动");
	}
	@Override
	protected void onStop() {
		// TODO 自动生成的方法存根
		super.onStop();
		Log.d("InferiorActivity->onStop","启动");
	}
	@Override
	protected void onRestart() {
		// TODO 自动生成的方法存根
		super.onRestart();
		Log.d("InferiorActivity->onRestart","启动");
	}
	@Override
	protected void onDestroy() {
		// TODO 自动生成的方法存根
		super.onDestroy();
		Log.d("InferiorActivity->onDestroy","启动");
	}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}

}

执行顺序如下图所示:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值