activity生命周期

来源:互联网 发布:歌曲音量增大软件 编辑:程序博客网 时间:2024/05/16 15:16

前言:activity生命周期 一个老生常谈的话题,但是没有亲自动手测试过,每次遇到都不是特别的清晰,处于模糊的装填。故

两个activity   main  second class  布局  在main中添加了两个按钮 一个弹出对话框 和一个跳转的按钮  布局简单  不黏贴了

public class MainActivity extends Activity {String TAG = "MainActivity";private AlertDialog.Builder builder;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);builder = new Builder(this);builder.setTitle("title");builder.setMessage("消息");builder.setCancelable(false);Button btn = (Button) this.findViewById(R.id.button);btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubbuilder.create().show();}});Button button = (Button) this.findViewById(R.id.tiaozhuan);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubstartActivity(new Intent(MainActivity.this,SecondActivity.class));}});}@Overrideprotected void onStart() {// TODO Auto-generated method stubsuper.onStart();Log.e(TAG, "onStart");}@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();Log.e(TAG, "onResume");}@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();Log.e(TAG, "onPause");}@Overrideprotected void onStop() {// TODO Auto-generated method stubsuper.onStop();Log.e(TAG, "onStop");}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();Log.e(TAG, "onDestroy");}}
second  代码

package com.example.ceshi;import android.os.Bundle;import android.app.Activity;import android.util.Log;import android.view.Menu;public class SecondActivity extends Activity {String TAG = "SecondActivity";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_second);Log.e(TAG, "onCreate");}@Overrideprotected void onStart() {// TODO Auto-generated method stubsuper.onStart();Log.e(TAG, "onStart");}@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();Log.e(TAG, "onResume");}@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();Log.e(TAG, "onPause");}@Overrideprotected void onStop() {// TODO Auto-generated method stubsuper.onStop();Log.e(TAG, "onStop");}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();Log.e(TAG, "onDestroy");}}

当我们点击 弹出对话框的时候是对activity的生命周期没有任何影响的。

当我们点击跳转时候打印如下

07-27 21:36:33.855: E/MainActivity(1848): onPause
07-27 21:36:33.871: E/SecondActivity(1848): onCreate
07-27 21:36:33.871: E/SecondActivity(1848): onStart
07-27 21:36:33.871: E/SecondActivity(1848): onResume
07-27 21:36:34.267: E/MainActivity(1848): onStop

当我们进入第二个activity后按返回按钮打印如下

07-27 21:38:37.119: E/SecondActivity(1848): onPause
07-27 21:38:37.119: E/MainActivity(1848): onStart
07-27 21:38:37.119: E/MainActivity(1848): onResume
07-27 21:38:37.515: E/SecondActivity(1848): onStop
07-27 21:38:37.515: E/SecondActivity(1848): onDestroy

可以看到 返回按钮 会销毁activity的

当我们在第一个activity直接返回主界面 打印如下

07-27 21:40:31.843: E/MainActivity(1848): onPause
07-27 21:40:32.379: E/MainActivity(1848): onStop

再回到主界面

07-27 21:41:08.107: E/MainActivity(1848): onStart
07-27 21:41:08.107: E/MainActivity(1848): onResume


其次但我们 进行屏幕切换横竖

系统默认会重新加载  即  onpause   onstop  ondestroy   oncreat     onstart  onresume 


虽然勉强初级的了解了整个流程了,但是还要结合到具体的需求中才行 ,还要继续参透 


0 0