zoukankan      html  css  js  c++  java
  • Android学习——体验活动的生命周期

    一个主活动,一个普通全屏活动,一个Dialog活动

    主活动——有两个按钮,分别打开普通活动和Dialog活动,并且在所有的生命周期中都有相应信息打印:

     1 package com.example.activitylifecycletest;
     2 
     3 import androidx.appcompat.app.AppCompatActivity;
     4 
     5 import android.content.Intent;
     6 import android.os.Bundle;
     7 import android.util.Log;
     8 import android.view.View;
     9 import android.widget.Button;
    10 
    11 public class MainActivity extends AppCompatActivity {
    12 
    13     @Override
    14     protected void onCreate(Bundle savedInstanceState) {
    15         super.onCreate(savedInstanceState);
    16         setContentView(R.layout.activity_main);
    17         Log.d("onCreate============: ","onCreated");
    18 //        打开NormalActivity
    19         Button startNormal=(Button) findViewById(R.id.start_normal_activity);
    20         final Button startDialog=(Button) findViewById(R.id.start_dialog_activity);
    21         startNormal.setOnClickListener(new View.OnClickListener() {
    22             @Override   // 打开NormalActivity
    23             public void onClick(View view) {
    24                 Intent intent=new Intent(MainActivity.this,NormalActivity.class);
    25                 startActivity(intent);
    26             }
    27         });
    28         startDialog.setOnClickListener(new View.OnClickListener() {
    29             @Override
    30             public void onClick(View view) {
    31                 Intent intent=new Intent(MainActivity.this,DialogActivity.class);
    32                 startActivity(intent);
    33             }
    34         });
    35     }
    36 
    37 //    所有生命周期方法
    38     @Override
    39     protected  void onStart(){
    40         super.onStart();
    41         Log.d("onStart============: ","onStart");
    42     }
    43     @Override
    44     protected void onResume(){
    45         super.onResume();
    46         Log.d("onResume============: ","onResume");
    47     }
    48     @Override
    49     protected void onPause(){
    50         super.onPause();
    51         Log.d("onPause============: ","onPause");
    52     }
    53     @Override
    54     protected void onStop(){
    55         super.onStop();
    56         Log.d("onStop============: ","onStop");
    57     }
    58     @Override
    59     protected void onDestroy(){
    60         super.onDestroy();
    61         Log.d("onDestroy============: ","onDestroy");
    62     }
    63     @Override
    64     protected void onRestart(){
    65         super.onRestart();
    66         Log.d("onRestart============: ","onRestart");
    67     }
    68 }
     

     (1)首次启动应用程序:

    入口活动一共执行了三个方法里的代码:

    • onCreate()
    • onStart()
    • onResume()

    (2)打开第一个普通全屏活动

     入口活动又执行了:

    • onPause()
    • onStop()
    • 由于打开的活动已经把MainActivity完全遮住了,所以这两个方法都会执行

    (3)按下back键返回入口程序

    入口程序又执行了

    •  onRestart()——由于之前MainActivity已经进入了停止状态,所以onRestart()会执行
    • onStart()
    • onResume()
    • 此时不会执行onCreate()方法,因为MainActivity并没有重新创建

     (4)继续启动DialogActivity

     执行了:

    • onPause()
    • dialog活动并没有遮住MainActivity,所以不会执行onStop()

    (5)返回MainActivity

    此时执行了:

    • onResume()

    (6)退出MainActivity

  • 相关阅读:
    Linux常用命令(二)
    C#异步调用
    Ajax运用总结
    SQL Server2005 FOR XML PATH 语句的应用
    SQL Server 2005 处理交叉表
    如何控制并发和控制死锁(内含pb的处理要点)
    WPF 中的换行符
    C#委托的异步调用
    pivot 附近有语法错误,您可能需要将当前数据库的兼容级别设置为更高的值。
    应用系统BUG分布小结
  • 原文地址:https://www.cnblogs.com/znjy/p/14907914.html
Copyright © 2011-2022 走看看