<Activity>的生命周期

本文详细介绍了Android中Activity的生命周期,包括从启动到销毁过程中经历的各种状态及其对应的回调方法。通过一个具体的例子,展示了如何在不同状态间进行切换,并解释了每个回调方法的作用。

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

在Activity生命周期中,下面的几个方法会被系统

  1. onCreate(Bundle savedStatus); 创建Activity时被回调,只会被系统调用一次.
    1. onStart(); 启动Activity时,被调用.
    2. onRestart();重新启动Activity时 被调用
    3. onResume();恢复Activity时被回调, onStart()后一个会回调 onResume()方法
    4. onPause();暂停Activity时被回调
    5. onStop();停止Activity时被回调.
    6. onDestroy();销毁Activity时被回调,该方法只会被调用一次.

package com.test.activitylifecycle;

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

public class MainActivity extends Activity {

    public static final String TAG = "MainActivity";
    Button btnStart, btnClose;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Log.d(TAG, "----onCreate----");

        btnStart = (Button) findViewById(R.id.btn_start);
        btnClose = (Button) findViewById(R.id.btn_close);

        btnStart.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, DialogStyleActivity.class);
                startActivity(intent);
            }
        });

        btnClose.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
    }

    @Override
    protected void onRestart() {
        super.onRestart();
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.d(TAG, "---- onStart ----");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.d(TAG, "---- onResume ----");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.d(TAG, "---- onPause ----");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d(TAG, "---- onStop ----");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d(TAG, "---- onDestroy ----");
    }

}

  1. 当启动程序的时候将会自动启动并执行该Activity;此时会在控制台打印并执行 onCreate,onStart, onResume, 三个方法
  2. 点击界面上”启动对话框风格的Activity”按钮后,此时对话框风格的Activity进入前台,此时MainActivity进入”暂停状态”,执行onPause(0方法,但是依然”部分可见”.
  3. 在当前状态下,点击模拟器右边的返回键,再次返回 MainActivity ,该Activity再次进入运行状态,此时执行的是 onResume() 方法.
  4. 在当前状态下点击 Home 按键 返回系统桌面,当前Activity将失去焦点且不可见.但该Activity并未被销毁,它进入了”停止”状态,执行了onRestart();onPause();onStop() 方法.
  5. 再次在模拟器的程序列表中找到该程序,执行了onStart(); onResume();方法
  6. 然后接着点击 退出按钮,该Activity将会结束自己,将会执行onPause();onStop();onDestroy()方法.

对话框格式的 Activity

package com.test.activitylifecycle;

import android.app.Activity;
import android.os.Bundle;

/**
 * 对话框风格的 Activity
 */
public class DialogStyleActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dialog_style);
    }
}

清单文件

设置对话框风格的Activity

<activity android:name=".DialogStyleActivity"
            android:theme="@android:style/Theme.Holo.Light.Dialog" />

Activity生命周期图


Activity生命周期图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值