Android入门教程 Activity生命周期

来源:互联网 发布:怎么查淘宝热卖数据 编辑:程序博客网 时间:2024/05/19 12:25

搞懂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();    }}
0 0
原创粉丝点击