Activity生命周期(2)—事件回调函数调用顺序

本文详细介绍了 Android 开发中 Activity 的生命周期,包括 onCreate(), onStart(), onResume() 等关键方法的作用及调用时机,并通过示例代码展示了不同生命周期状态间的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 完全生命周期 onCreate() — onDestroy() :从Activity的生命周期建立到销毁的全部过程
  • 可是生命周期 onStart() — onStop():Activity在界面上从可见到不可见的过程
  • 活动生命周期 onResume — onPause() :Activity在屏幕最上层,并能与用户进行交互

示例程序

1.程序代码

(通过在生命周期函数中添加“日志点”的方法进行调试)

package com.jhincheung.activitylifecycle;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {
	private static String TAG = "LIFECYCLE";
	
	/*
	 * 完全声明周期开始时被调用,初始化Activity
	 */
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Log.i(TAG,"(1)onCreate()");
		
		//定义按钮和按钮监听函数,通过用户点击按钮调用finish()函数结束程序
		Button button =(Button)findViewById(R.id.btn_finish);
		button.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View view) {
				finish();
			}
		});
	}
	
	/*
	 * 可视生命周期开始时被调用,对用户界面进行必要的更改
	 */
	@Override
	public void onStart() {
		super.onStart();
		Log.i(TAG, "(2)onStart()");
	};
	
	/*
	 * 在onStart()后被调用,用于恢复onSaveInstanceState()保存的用户界面信息
	 */
	@Override
	public void onRestoreInstanceState(Bundle savedInstanceState) {
		super.onRestoreInstanceState(savedInstanceState);
		Log.i(TAG, "(3)onRestoreInstanceState()");
	};
	
	
	/*
	 * 在活动周期开始时被调用,恢复被onPause()停止的用于界面更新的资源
	 */
	@Override
	protected void onResume() {
		super.onResume();
		Log.i(TAG, "(4)onResume()");
	}
	
	/*
	 * 在onPause后被调用,保存界面的临时信息
	 */
	@Override
	protected void onSaveInstanceState(Bundle outState) {
		super.onSaveInstanceState(outState);
		Log.i(TAG, "(5)onSaveInstanceState()");
	}
	
	/*
	 * 在重新进入可视生命周期前被调用,载入界面所需要的更改信息
	 */
	@Override
	protected void onRestart() {
		super.onRestart();
		Log.i(TAG, "(6)onRestart()");
	}
	
	/*
	 * 在活动生命周期结束时被调用,用来保存持久的数据或释放占用的资源
	 */
	@Override
	protected void onPause() {
		super.onPause();
		Log.i(TAG, "(7)onPause()");
	}
	
	/*
	 * 在可视化生命周期结束时被调用,用来释放占用的资源
	 */
	@Override
	protected void onStop() {
		super.onStop();
		Log.i(TAG, "(8)onStop()");
	}
	
	/*
	 * 在完全生命周期结束时被调用,释放资源,包括线程、数据连接等
	 */
	@Override
	protected void onDestroy() {
		super.onDestroy();
		Log.i(TAG, "(9)onDestory()");
	}
	
}

2.程序界面

171117_y1Zk_2866387.png

3.调用顺序

(1)完全生命周期

启动ActivityLifeCycle — 点击”结束程序“按钮关闭程序

171440_bojR_2866387.png

调用顺序:onCreate — onStart —onResume — onPause — onStop  — onDestroy

(2)可视生命周期

启动ActivityLifeCycle — 启动拨号程序 — 返回ActivityLifeCycle

172049_Fnu8_2866387.png

调用顺序:

  • 启动:(1)—(2)—(4)
  • Activity被覆盖:(7)—(5)—(8)
  • 重新显示Activity:(6)—(2)—(4)

转载于:https://my.oschina.net/zhangyujian/blog/786942

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值