网友通过本文主要向大家介绍了activity生命周期图,activity生命周期,安卓activity生命周期,activity生命周期详解,activity生命周期方法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
Activity生命周期,activity生命周期图
在开始之前我们先了解一下什么是Activity:
Activity活动,理解为手机屏幕,与用户的可视化界面;Activity存储在Activity栈中,后进先出
1. onPause()和onStop()被调用的前提是: 打开了一个新的Activity!而前者是旧Activity还可见的状态;后者是旧Activity已经不可见!
2. 另外,亲测:AlertDialog和PopWindow是不会触发上述两个回调方法的!
接下来我们就来详细说一说这几个过程。
但是知道这些还不够,我们必须亲自试验一下才能深刻体会,融会贯通。
1 package com.liuxianglin.demo 2 3 import android.app.Activity; 4 import android.content.Context; 5 import android.content.Intent; 6 import android.os.Bundle; 7 import android.util.Log; 8 import android.view.View; 9 import android.widget.Button; 10 11 public class LifeCycleActivity extends Activity { 12 13 private static final String TAG = "LifeCycleActivity"; 14 private Context context = this; 15 private int param = 1; 16 17 //Activity创建时被调用 18 @Override 19 public void onCreate(Bundle savedInstanceState) { 20 super.onCreate(savedInstanceState); 21 Log.i(TAG, "onCreate called."); 22 23 setContentView(R.layout.lifecycle); 24 25 Button btn = (Button) findViewById(R.id.btn); 26 btn.setOnClickListener(new View.OnClickListener() { 27 @Override 28 public void onClick(View v) { 29 Intent intent = new Intent(context, TargetActivity.class); 30 startActivity(intent); 31 } 32 }); 33 } 34 35 //Activity创建或者从后台重新回到前台时被调用 36 @Override 37 protected void onStart() { 38 super.onStart(); 39 Log.i(TAG, "onStart called."); 40 } 41 42 //Activity从后台重新回到前台时被调用 43 @Override 44 protected void onRestart() { 45 super.onRestart(); 46 Log.i(TAG, "onRestart called."); 47 } 48 49 //Activity创建或者从被覆盖、后台重新回到前台时被调用 50 @Override 51 protected void onResume() { 52 super.onResume(); 53 Log.i(TAG, "onResume called."); 54 } 55 56 //Activity窗口获得或失去焦点时被调用,在onResume之后或onPause之后 57 /*@Override 58 public void onWindowFocusChanged(boolean hasFocus) { 59 super.onWindowFocusChanged(hasFocus); 60 Log.i(TAG, "onWindowFocusChanged called."); 61 }*/ 62 63 //Activity被覆盖到下面或者锁屏时被调用 64 @Override 65 protected void onPause() { 66 super.onPause(); 67 Log.i(TAG, "onPause called."); 68 //有可能在执行完onPause或onStop后,系统资源紧张将Activity杀死,所以有必要在此保存持久数据 69 } 70 71 //退出当前Activity或者跳转到新Activity时被调用 72 @Override 73 protected void onStop() { 74 super.onStop(); 75 Log.i(TAG, "onStop called."); 76 } 77 78 //退出当前Activity时被调用,调用之后Activity就结束了 79 @Override 80 protected void onDestroy() { 81 super.onDestroy(); 82 Log.i(TAG, "onDestory called."); 83 } 84 85 /** 86 * Activity被系统杀死时被调用. 87 * 例如:屏幕方向改变时,Activity被销毁再重建;当前Activity处于后台,系统资源紧张将其杀死. 88 * 另外,当跳转到其他Activity或者按Home键回到主屏时该方法也会被调用,系统是为了保存当前View组件的状态. 89 * 在onPause之前被调用. 90 */ 91 @Override 92 protected void onSaveInstanceState(Bundle outState) { 93 outState.putInt("param", param); 94 Log.i(TAG, "onSaveInstanceState called. put param: " + param); 95 super.onSaveInstanceState(outState); 96 } 97 98 /** 99 * Activity被系统杀死后再重建时被调用. 100 * 例如:屏幕方向改变时,Activity被销毁再重建;当前Activity处于后台,系统资源紧张将其杀死,用户又启动该Activity. 101 * 这两种情况下onRestoreInstanceState都会被调用,在onStart之后. 102 */ 103 @Override 104 protected void onRestoreInstanceState(Bundle savedInstanceState) { 105 param = savedInstanceState.getInt("param"); 106 Log.i(TAG, "onRestoreInstanceState called. get param: " + param); 107 super.onRestoreInstanceState(savedInstanceState);