Android Activity lifecycle 生命周期

理解Activity生命周期,有助于在开发软件的过程正确处理逻辑。

仅供自己理解参考

完美解说http://blog.csdn.net/android_tutor/article/details/5772285

package com.test;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;

/**
 * 
 * @author xxq
 *
 */

// 一个Activity一般有如下四个状态
// 1.如果一个Activity在屏幕是可视的(在Activity栈顶),那么它是活跃运行的
// 2.如果一个Activity在屏幕上仍可视但是已失去焦点(如一个不是全屏显示的Activity占据Activity栈顶),那么它将转为pause状态,一个
//   paused Activity仍然是存活着(它持有所有信息,并且仍受window manager管理)
// 3.如果一个Activity完全被另外一个Activity遮蔽(即前者对用户完全不可视),那么它会转为stop状态(它仍持有所有信息),但是该Activity
//   有可能在内存告急情况下会被杀死
// 4.如果一个Activity处于stop或者是pause状态,那么系统能够移除该Activity,通过请求Activity自行结束或直接杀死该进程


// 如何停止在pause状态,不让其进入stop状态,这点没有实现

// 操作一: 启动该程序,oncreate -> onstart ->onresume

// 操作二: 按Home键, onpause -> onstop

// 操作三: 长按Home键,出现最近运行程序,点击Home键,然后点击该程序 onrestart -> onstart -> onresume

public class Main extends Activity {
    private final static String TAG = "Main";
    EditText editText;
    
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Log.d(TAG, "onCreate");
    }

    // 当Main对用户可见时被调用
    protected void onStart() {
        Log.d(TAG, "onStart");
        super.onStart();
    }

    // 当Main开始与用户交互时被调用,此时Main位于
    // 其中Activity的栈顶,onPause()方法往往在onResume()滞后被调用
    protected void onResume() {
        Log.d(TAG, "onResume");
        super.onResume();
    }

    // 当要恢复先前的Activity时被调用(或按Home,BackSpace),通常在这里实现数据的持久化
    // 这个函数要尽可能快的返回,要恢复的Activity在返回onPause()才能被调用
    protected void onPause() {
        Log.d(TAG, "onPause");
        super.onPause();
    }

    // 当Main不再对用户可视被调用,可能的原因1.恢复先前Activity 2.按Home 3.按Back键关闭软件
    protected void onStop() {
        Log.d(TAG, "onStop");
        super.onStop();
    }
    
    // 恢复之前停止(onStop())的Activity会被调用
    protected void onRestart() {
        Log.d(TAG, "onRestart");
        super.onRestart();
    }

    // 当Activity被destroy最后一个被调用的方法。
    // 1.activity执行完了,显式调用finish()方法
    // 2.系统暂时破坏这个Activity的实例来释放空间
    // 3.人为主动关闭该软件
    protected void onDestroy() {
//        Log.d(TAG, isFinishing() + "");
        Log.d(TAG, "onDestroy");
        super.onDestroy();
    }
}

相关推荐