Activity的生命周期

谁践踏了优雅 2023-03-01 06:30 23阅读 0赞

Activity生命周期

为了更加生动的阐述 Activity 的生命周期,我们采用一个小例子来看看吧

  • 创建两个 Activity
  • 界面 A 点击按钮跳转到界面 B
  • 通过 Log 打印生命周期
    20200722212859495.png_pic_center

1.启动应用,显示界面 A

  • 界面A>>>: onCreate()
  • 界面A>>>: onStart()
  • 界面A>>>: onResume()

2.点击按钮,跳转到界面 B

  • 界面A>>>: onPause()
  • 界面B>>>: onCreate()
  • 界面B>>>: onStart()
  • 界面B>>>: onResume()
  • 界面A>>>: onStop()

3.返回界面 A

  • 界面B>>>: onPause()
  • 界面A>>>: onRestart()
  • 界面A>>>: onStart()
  • 界面A>>>: onResume()
  • 界面B>>>: onStop()
  • 界面B>>>: onDestroy()

4.点击 Home 键

  • 界面A>>>: onPause()
  • 界面A>>>: onStop()

5.重新打开 APP

  • 界面A>>>: onRestart()
  • 界面A>>>: onStart()
  • 界面A>>>: onResume()

6.点击 Back 键

  • 界面A>>>: onPause()
  • 界面A>>>: onStop()
  • 界面A>>>: onDestroy()

7.重新打开 APP

  • 界面A>>>: onCreate()
  • 界面A>>>: onStart()
  • 界面A>>>: onResume()

MainActivity.java

  1. public class MainActivity extends AppCompatActivity {
  2. private static final String TAG = "MainActivity";
  3. private Button button;
  4. @Override
  5. protected void onCreate(Bundle savedInstanceState) {
  6. super.onCreate(savedInstanceState);
  7. setContentView(R.layout.activity_main);
  8. Log.i(TAG, "界面A>>>: onCreate()");
  9. button = findViewById(R.id.main_btn);
  10. button.setOnClickListener(new View.OnClickListener() {
  11. @Override
  12. public void onClick(View v) {
  13. Intent intent = new Intent(MainActivity.this, MainActivity2.class);
  14. startActivity(intent);
  15. }
  16. });
  17. }
  18. @Override
  19. protected void onStart() {
  20. super.onStart();
  21. Log.i(TAG, "界面A>>>: onStart()");
  22. }
  23. @Override
  24. protected void onResume() {
  25. super.onResume();
  26. Log.i(TAG, "界面A>>>: onResume()");
  27. }
  28. @Override
  29. protected void onPause() {
  30. super.onPause();
  31. Log.i(TAG, "界面A>>>: onPause()");
  32. }
  33. @Override
  34. protected void onStop() {
  35. super.onStop();
  36. Log.i(TAG, "界面A>>>: onStop()");
  37. }
  38. @Override
  39. protected void onDestroy() {
  40. super.onDestroy();
  41. Log.i(TAG, "界面A>>>: onDestroy()");
  42. }
  43. @Override
  44. protected void onRestart() {
  45. super.onRestart();
  46. Log.i(TAG, "界面A>>>: onRestart()");
  47. }
  48. }

MainActivity2.java

  1. public class MainActivity2 extends AppCompatActivity {
  2. private static final String TAG = "MainActivity2";
  3. @Override
  4. protected void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.activity_main2);
  7. Log.i(TAG, "界面B>>>: onCreate()");
  8. }
  9. @Override
  10. protected void onStart() {
  11. super.onStart();
  12. Log.i(TAG, "界面B>>>: onStart()");
  13. }
  14. @Override
  15. protected void onResume() {
  16. super.onResume();
  17. Log.i(TAG, "界面B>>>: onResume()");
  18. }
  19. @Override
  20. protected void onPause() {
  21. super.onPause();
  22. Log.i(TAG, "界面B>>>: onPause()");
  23. }
  24. @Override
  25. protected void onStop() {
  26. super.onStop();
  27. Log.i(TAG, "界面B>>>: onStop()");
  28. }
  29. @Override
  30. protected void onDestroy() {
  31. super.onDestroy();
  32. Log.i(TAG, "界面B>>>: onDestroy()");
  33. }
  34. @Override
  35. protected void onRestart() {
  36. super.onRestart();
  37. Log.i(TAG, "界面B>>>: onRestart()");
  38. }
  39. }

activity_main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. android:orientation="vertical"
  8. tools:context=".MainActivity">
  9. <TextView
  10. android:layout_width="match_parent"
  11. android:layout_height="wrap_content"
  12. android:layout_marginTop="100dp"
  13. android:gravity="center"
  14. android:text="我是界面A"
  15. android:textColor="#000000"
  16. android:textSize="36sp" />
  17. <Button
  18. android:id="@+id/main_btn"
  19. android:layout_width="match_parent"
  20. android:layout_height="wrap_content"
  21. android:layout_margin="32dp"
  22. android:text="跳转到界面B"
  23. android:textColor="#000000"
  24. android:textSize="36sp" />
  25. </LinearLayout>

activity_main2.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. tools:context=".MainActivity2">
  8. <TextView
  9. android:layout_width="match_parent"
  10. android:layout_height="wrap_content"
  11. android:layout_gravity="center_vertical"
  12. android:gravity="center"
  13. android:text="我是界面B"
  14. android:textColor="#000000"
  15. android:textSize="36sp" />
  16. </LinearLayout>

发表评论

表情:
评论列表 (有 0 条评论,23人围观)

还没有评论,来说两句吧...

相关阅读

    相关 activity生命周期

    通过实现回调方法来管理你的activity的生命周期,对于开发一个健壮而又灵活的应用程序而言是至关重要的。 与其它activity的关联性、自身的任务和back stack直接

    相关 activity生命周期

    activity的生命周期分为典型情况和异常情况。 一.典型情况下生命周期的分析: 1)onCreate:表示activity正在创建,是第一个方法;一般在这个方法中我