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の完全なライフサイクルを定義し、これらの方法を実現し、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:
SecondActivity:
SecondActivity
Activityを使用するには、Manifest.xmlファイルに登録する必要があります.
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
好きならお勧め!ありがとう~
連絡先:[email protected]
[Android四大コンポーネント学習シリーズActivity編]
1. Androidの4つのコンポーネントのActivity(一)定義、ステータス、およびバックスタック(図詳細)
2. Androidの4つのコンポーネントである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
好きならお勧め!ありがとう~