歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android開發教程:Activity的生命周期淺析

Android開發教程:Activity的生命周期淺析

日期:2017/3/1 10:36:35   编辑:Linux編程

1.Android系統中Activity作為Activity棧(Stack)被管理的,大家都知道棧的特點是先進後出,所以當前活動的Activity處於棧頂,之前非活動的Activity被壓入棧底,等待是否可能被恢復為活動狀態。

Android API中所提供的Activity生命周期圖:

650) this.width=650;" height=120>

2.下面的整個Activity生命周期中的所有方法,我們可以根據程序的需要來覆蓋相應的方法:

  1. public class Activity extends ApplicationContext {
  2. //創建的時候調用
  3. protected void onCreate(Bundle savedInstanceState);
  4. //啟動的時候調用
  5. protected void onStart();
  6. //重新啟動的時候調用
  7. protected void onRestart();
  8. //恢復的時候調用
  9. protected void onResume();
  10. //暫停的時候調用
  11. protected void onPause();
  12. //停止的時候調用
  13. protected void onStop();
  14. //銷毀的時候調用
  15. protected void onDestroy();
  16. }

onCreate(Bundle savedInstanceState):創建activity時調用。設置在該方法中,還以Bundle的形式提供對以前儲存的任何狀態的訪問! onStart():activity變為在屏幕上對用戶可見時調用。 onResume():activity開始與用戶交互時調用(無論是啟動還是重新啟動一個活動,該方法總是被調用的) onPause():activity被暫停或收回cpu和其他資源時調用,該方法用於保存活動狀態的,也是保護現場,壓棧。 onStop():activity被停止並轉為不可見階段及後續的生命周期事件時調用。 onRestart():重新啟動activity時調用。該活動仍在棧中,而不是啟動新的活動 onDestroy():activity被完全從系統內存中移除時調用

3.下面通過實例來測試Activity的生命周期中各個方法的調用情況,將Activity的所有方法都覆蓋,主要用Log打印輸出信息,並通過日志(LogCat)方式來觀察運行結果。Log.v(String tag, String msg); //Verbose
Log.d(String tag, String msg); //Debug
Log.i(String tag, String msg); //Info
Log.w(String tag, String msg); //Warning
Log.e(String tag, String msg); //Error
tag類似標簽,可以是任意字符串,通常可以使用類名+方法名, 主要是用來在查看日志時提供一個篩選條件。

下面的實例是測試Activity的生命周期中各個方法的調用情況:

MainActivity.java

  1. package com.android.TestAvtivity.activity;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.util.Log;
  5. import android.view.View;
  6. import android.view.View.OnClickListener;
  7. import android.widget.Button;
  8. public class MainActivity extends Activity {
  9. private Button btn;
  10. private static final String TAG="MainActivity";
  11. @Override
  12. public void onCreate(Bundle savedInstanceState) {
  13. super.onCreate(savedInstanceState);
  14. setContentView(R.layout.main);
  15. //輸出日志
  16. Log.i(TAG, "MainActivity onCreate--->");
  17. btn = (Button)findViewById(R.id.Button1);
  18. btn.setOnClickListener(new OnClickListener() {
  19. @Override
  20. public void onClick(View v) {
  21. //結束當前的Activity
  22. MainActivity.this.finish();
  23. }
  24. });
  25. }
  26. @Override
  27. //啟動
  28. protected void onStart() {
  29. super.onStart();
  30. //輸出日志信息
  31. Log.i(TAG, "MainActivity onStart--->");
  32. }
  33. @Override
  34. //重啟
  35. protected void onRestart() {
  36. super.onRestart();
  37. //輸出日志信息
  38. Log.i(TAG, "MainActivity onRestart--->");
  39. }
  40. @Override
  41. //恢復
  42. protected void onResume() {
  43. super.onResume();
  44. //輸出日志信息
  45. Log.i(TAG, "MainActivity onResume--->");
  46. }
  47. @Override
  48. //暫停
  49. protected void onPause() {
  50. super.onPause();
  51. //輸出日志信息
  52. Log.i(TAG, "MainActivity onPause--->");
  53. }
  54. @Override
  55. //停止
  56. protected void onStop() {
  57. super.onStop();
  58. //輸出日志信息
  59. Log.i(TAG, "MainActivity onStop--->");
  60. }
  61. @Override
  62. //銷毀
  63. protected void onDestroy() {
  64. super.onDestroy();
  65. //輸出日志信息
  66. Log.i(TAG, "MainActivity onDestroy--->");
  67. }
  68. }
Copyright © Linux教程網 All Rights Reserved