Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android四大組件之——Activity的生命周期(圖文詳解)

Android四大組件之——Activity的生命周期(圖文詳解)

編輯:關於Android編程

Activity生命周期的回調方法:         復制代碼 //創建Activity public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);     } //Activity快要變成可見的     @Override     protected void onStart() {         super.onStart();     } //Activity變成可見的,處於運行狀態     @Override     protected void onResume() {         super.onResume();     } //其他Activity獲得用戶焦點,(Activity快要暫停了)     @Override     protected void onPause() {         super.onPause();     } //Activity不再可見,處於停止狀態     @Override     protected void onStop() {         super.onStop();     } //Activity快要被銷毀了     @Override     protected void onDestroy() {         super.onDestroy();    }   } 復制代碼            這些方法定義了Activity完整的生命周期,實現這些方法,我們能監控Activity生命周期中的三個嵌套循環(monitor three nested loops in the activity lifecycle)           1.Activity的entire lifetime(全部的生命期)發生在                               調用onCreate()和調用onDestory()之間。         在onCreate()方法中執行全局狀態的建立(例如定義布局),在onDestroy()方法中釋放所有保存的資源。                  2.Activity的visible lifetime(可見的生命期)發生在                               調用onStart()和onStop()之間。          在這個期間,用戶能在屏幕上看見Activity,和它進行交互。         系統在Activity的完整壽命中可能多次調用onStart()和onStop(),正如Activity交替地對用戶可見或隱藏。         3Activity的foreground lifetime (前台的生命期)發生在                                調用onResume()和onPause()之間。        在這期間,Activity在屏幕上所有其他Activity的前面,有用戶輸入焦點。        一個Activity能頻繁的在前台進入和出去之間轉變。          下面這張圖很好的講解了Activity的生命周期和上面說的三種生命期:                              下面通過一個Demo來學習以下Activity的生命周期:         Demo很簡單,就只有兩個Activity,MainActivity和SecondActivity和一個按鈕。點擊按鈕,由MainActivity跳轉到SecondActivity。         MainActivity:   復制代碼  1 package com.example.activitytest;  2   3 import android.app.Activity;  4 import android.content.Intent;  5 import android.os.Bundle;  6 import android.util.Log;  7 import android.view.View;  8 import android.view.View.OnClickListener;  9 import android.widget.Button; 10  11 public class MainActivity extends Activity { 12    13     private Button btn; 14     private static final String TAG = "ActivityTest"; 15     @Override 16     protected void onCreate(Bundle savedInstanceState) { 17         super.onCreate(savedInstanceState); 18         Log.d(TAG, "MainActivity onCreate"); 19         setContentView(R.layout.activity_main); 20         btn = (Button)findViewById(R.id.btn); 21         btn.setOnClickListener(new OnClickListener() { 22              23             @Override 24             public void onClick(View v) { 25                    Intent intent = new Intent(MainActivity.this,SecondActivity.class); 26                    startActivity(intent); 27             } 28         }); 29          30     } 31     @Override 32     protected void onPause() { 33         Log.d(TAG, "MainActivity onPause  "); 34         super.onPause(); 35     } 36     @Override 37     protected void onResume() { 38         Log.d(TAG, "MainActivity onResume  "); 39         super.onResume(); 40     } 41     @Override 42     protected void onStart() { 43         super.onStart(); 44         Log.d(TAG,"MainActivity onStart  "); 45     } 46     @Override 47     protected void onStop() { 48         super.onStop(); 49         Log.d(TAG, "MainActivity onStop  "); 50     } 51     @Override 52     protected void onDestroy() { 53         super.onDestroy(); 54         Log.d(TAG, "MainActivity onDestroy  "); 55     } 56     @Override 57     protected void onRestart() { 58         super.onRestart(); 59         Log.d(TAG, "MainActivity onRestart  "); 60     } 61 } 復制代碼SecondActivity:         復制代碼  1 package com.example.activitytest;  2   3 import android.app.Activity;  4 import android.os.Bundle;  5 import android.util.Log;  6   7 public class SecondActivity extends Activity {  8     private static final String TAG = "ActivityTest";  9        @Override 10     protected void onCreate(Bundle savedInstanceState) { 11            setContentView(R.layout.second_layout); 12            super.onCreate(savedInstanceState); 13            Log.d(TAG,"onCreate"); 14     } 15        @Override 16     protected void onStart() { 17         super.onStart(); 18         Log.d(TAG, "onStart"); 19     } 20        @Override 21     protected void onResume() { 22         super.onResume(); 23         Log.d(TAG, "onResume"); 24     } 25      @Override 26     protected void onPause() { 27         super.onPause(); 28         Log.d(TAG, "onPause"); 29     } 30      @Override 31     protected void onStop() { 32         super.onStop(); 33         Log.d(TAG, "onStop"); 34     } 35      @Override 36     protected void onDestroy() { 37         super.onDestroy(); 38         Log.d(TAG, "onDestroy"); 39     } 40      @Override 41     protected void onRestart() { 42         super.onRestart(); 43         Log.d(TAG, "onRestart"); 44     } 45 } 復制代碼  使用Activity需要在Manifest.xml文件中注冊:         復制代碼  1 <?xml version="1.0" encoding="utf-8"?>  2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"  3     package="com.example.activitytest"  4     android:versionCode="1"  5     android:versionName="1.0" >  6   7     <uses-sdk  8         android:minSdkVersion="8"  9         android:targetSdkVersion="21" /> 10  11     <application 12         android:allowBackup="true" 13         android:icon="@drawable/ic_launcher" 14         android:label="@string/app_name" 15         android:theme="@style/AppTheme" > 16         <activity 17             android:name=".MainActivity" 18             android:label="@string/app_name" > 19             <intent-filter> 20                 <action android:name="android.intent.action.MAIN" /> 21                  <category android:name="android.intent.category.LAUNCHER" /> 22                  23             </intent-filter> 24         </activity> 25         <activity 26             android:name=".SecondActivity" 27             android:label="SecondActivity" 28             android:theme="@android:style/Theme.Dialog" 29             > 30         </activity> 31     </application>
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved