Androidの4つのコンポーネントであるActivityのライフサイクル(図の詳細)

26019 ワード

転載は冒頭にこのブログのURLを明記してください:http://www.cnblogs.com/JohnTsai
      連絡先:[email protected]
      [Android四大コンポーネント学習シリーズActivity編]
      1. Androidの4つのコンポーネントのActivity(一)定義、ステータス、およびバックスタック(図詳細)
      2. Androidの4つのコンポーネントであるActivityのライフサイクル(図の詳細)
     前の記事ではActivityの定義、ステータス、バックスタックについて説明しましたが、Activityのポイントと難点であるActivityのライフサイクルについて説明します.
 
  • 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ライフサイクルの3つのネストされたサイクル(monitor three nested loops in the activity lifecycle)を監視することができます.
     
           
    1.Activityのentire ライフタイム(すべてのライフタイム)は
                                  呼び出しonCreate()と呼び出しonDestory()の間.
            onCreate()メソッドでグローバル状態の確立(レイアウトの定義など)を実行し、onDestroy()メソッドで保存されているすべてのリソースを解放します.
           
     
           2.Activityのvisible lifetime(可視ライフタイム)は
                                  onStart()とonStop()の間を呼び出します.
             その間,ユーザは画面上でActivityを見て対話することができる.
            システムは、Activityの完全な寿命において、Activityがユーザに対して交互に表示または非表示になるように、onStart()およびonStop()を複数回呼び出すことができる.
     
          3 Activityのforeground lifetime (フロントのライフタイム)
                                   onResume()とonPause()の間を呼び出します.
           その間、Activityは画面上の他のすべてのActivityの前に、ユーザーがフォーカスを入力します.
           Activityは、フロントの出入りとの間で頻繁に変化することができます.
     
           次の図はActivityのライフサイクルと上記の3つのライフサイクルをよく説明しています.
           
          
           次のActivityのライフサイクルをDemoで学習します.
          Demoは簡単で、2つのActivity、MainActivityとSecondActivityと1つのボタンしかありません.ボタンをクリックすると、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,"SecondActivity onCreate");
    
    14            
    
    15     }
    
    16        @Override
    
    17     protected void onStart() {
    
    18         super.onStart();
    
    19         Log.d(TAG, "SecondActivity onStart");
    
    20     }
    
    21        @Override
    
    22     protected void onResume() {
    
    23         super.onResume();
    
    24         Log.d(TAG, "SecondActivity onResume");
    
    25   
    
    26        }
    
    27      @Override
    
    28     protected void onPause() {
    
    29         super.onPause();
    
    30         Log.d(TAG, "SecondActivity onPause");
    
    31     }
    
    32      @Override
    
    33     protected void onStop() {
    
    34         super.onStop();
    
    35         Log.d(TAG, "SecondActivity onStop");
    
    36     }
    
    37      @Override
    
    38     protected void onDestroy() {
    
    39         super.onDestroy();
    
    40         Log.d(TAG, "SecondActivity onDestroy");
    
    41     }
    
    42      @Override
    
    43     protected void onRestart() {
    
    44         super.onRestart();
    
    45         Log.d(TAG, "SecondActivity onRestart");
    
    46     }
    
    47 }

    SecondActivity
     
     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>

    Manifest.xml
        1.アプリケーションを実行し、MainActivityを実行します.
         Activity実行呼び出しのコールバック方法は、onCreate()->onStart()->onResume()であることがわかります.
      
        2.ジャンプボタンをクリックし、MainActivityからSecondActivityにジャンプします.
          1>SecondActivityはDialogです.
        
         SecondActivityはDialogであるため、MainActivityは依然として表示されるため、onPause()メソッドのみが呼び出されます.
         2>SecondActivityをDialogでないに変更する場合(Manifest.xmlファイルからandroid:theme="@android:style/Theme.Dialog"の行を削除するだけ)
         ジャンプボタンをクリックします.
       
          MainActivityの場合、表示されないため、状態は運転から停止に変わります.
          コールバックメソッドが順次呼び出されました:onPause()->onStop()
          3.Activityが動作している場合は、戻るボタンをクリックします.
         
            戻るボタンをクリックすると、Activityが実行状態からデッド状態になり、そのコールバックメソッドがonPause()->onStop()->onDestroy()の順に呼び出されます.
          4.Activityは稼働中で、ホームページボタンをクリックしてデスクトップに戻ります.
        
           Activityは運転状態から停止状態に変わり、そのコールバックメソッドを順番に呼び出します:onPause()->onStop()
           5.Activityは、デスクトップからActivityに戻る停止状態です.
           
            停止->実行、コールバックメソッドの順に呼び出す:onRestart()->onStart()->onResume()
          6.Activityは運転中で、画面を回転する:
          
            回転画面はActivityを破棄してActivityを再作成するプロセスであることがわかります.
             運転->一時停止->停止->死亡->運転
            コールバックメソッドを順に呼び出します:onPause()->onStop->onDestroy()->onCreate()->onStart()->onResume()
     
              本人メールアドレス:[email protected]ああ、交流討論を歓迎します.     
              転載を歓迎して、転載して文章の冒頭で本ブログのウェブサイトを明記してください:http://www.cnblogs.com/JohnTsai
              好きならお勧め!ありがとう~