Android入门教程 Activity生命周期

搞懂Activity生命周期对于Android开发非常重要。

Activity生命周期大致可归纳为四种状态:

  • 运行态。当前Activity位于前台,用户可见,可获得焦点。
  • 暂停态。其他Activity位于前台,该Activity可见但不能获得焦点(比如启动一个对话框风格的Activity)。
  • 停止态。该Activity不可见,失去焦点。
  • 销毁态。该Activity结束。

在应用过程中,我们会遇到这样几种情况

  • 程序启动
  • 用户点击了Home键
  • 用户跳转了新的Activity
  • 用户点开了一个Dialog风格的Activity
  • 用户接到电话
  • 用户退出程序

我们一个一个来做实验,逐个看控制台打印情况

1、程序启动

12-23 06:17:18.318  19808-19808/? D/ActivityLife﹕ ---onCreate---
12-23 06:17:18.355  19808-19808/? D/ActivityLife﹕ ---onStart---
12-23 06:17:18.355  19808-19808/? D/ActivityLife﹕ ---onResume---

2、用户点击了Home键

12-23 06:19:10.246  19808-19808/? D/ActivityLife﹕ ---onPause---
12-23 06:19:11.946  19808-19808/? D/ActivityLife﹕ ---onStop---

返回应用

12-23 06:19:41.675  19808-19808/? D/ActivityLife﹕ ---onRestart---
12-23 06:19:41.675  19808-19808/? D/ActivityLife﹕ ---onStart---
12-23 06:19:41.675  19808-19808/? D/ActivityLife﹕ ---onResume---

3、用户跳转了新的Activity

12-23 06:20:27.545  19808-19808/? D/ActivityLife﹕ ---onPause---
12-23 06:20:28.465  19808-19808/? D/ActivityLife﹕ ---onStop---

4、用户点开了一个Dialog风格的Activity

12-23 06:40:16.485  19993-19993/? D/ActivityLife﹕ ---onPause---

返回

12-23 06:40:24.776  19993-19993/? D/ActivityLife﹕ ---onResume---

5、用户接到电话

12-23 06:41:23.625  19993-19993/? D/ActivityLife﹕ ---onPause---
12-23 06:41:33.720  19993-19993/? D/ActivityLife﹕ ---onStop---

6、用户退出程序

12-23 06:43:31.325  19993-19993/? D/ActivityLife﹕ ---onPause---
12-23 06:43:31.720  19993-19993/? D/ActivityLife﹕ ---onStop---
12-23 06:43:32.120  19993-19993/? D/ActivityLife﹕ ---onDestroy---

主程序代码

package com.android.crazy.activitylifetest;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;

/**
 * Jet
 * Activity生命周期测试
 */
public class MainActivity extends Activity {

    private String TAG = "ActivityLife";
    private Button newBtn;
    private Button alertBtn;
    private Button finishBtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        Log.d(TAG, "---onCreate---");
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        newBtn = (Button)findViewById(R.id.newBtn);
        alertBtn = (Button)findViewById(R.id.alertBtn);
        finishBtn = (Button)findViewById(R.id.finishBtn);
        newBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                startActivity(intent);
            }
        });
        alertBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setTitle("TIPS");
                builder.setMessage("Hello there.");
                builder.setPositiveButton("DlgActivity", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Intent intent = new Intent(MainActivity.this, DialogStyleActivity.class);
                        startActivity(intent);
                    }
                });
                builder.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                });
                builder.create().show();
            }
        });
        finishBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                MainActivity.this.finish();
            }
        });
    }

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

    }

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

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

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

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

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

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值