AndroidのActivityのライフサイクル
4190 ワード
Activityライフサイクル:システム内でActivityはActivityスタックによって管理され、新しいActivityが起動するとスタックの上部に配置され、実行中のActivityとなり、前のActivityはスタックに保持され、新しいActivityが終了するまでフロントに配置されません.Activityには4つの本質的な違いがある:スクリーンフロント(スタックトップ)で、アクティブ状態または実行状態(active or running)と呼ばれている.Acrivityがフォーカスを失ったが、依然として表示されている(新しい非フルスクリーンのActivityまたは透明なActivityがスタックの上部に配置されている)場合は、一時停止状態(Paused)と呼ばれます.一時停止状態のActivityは依然として活気を保っている(すべての状態、メンバー情報、ウィンドウマネージャと接続を維持している)が、システムが極端に低下している間に殺される.あるActivityが別のActivityによって完全に上書きされた場合、停止状態(Stopped)と呼ばれます.すべてのステータスとメンバー情報を保持しますが、表示されないため、ウィンドウが隠され、メモリが不足しているときにシステムに消去されます.Androidシステムは、Activityの終了を要求するか、プロセスを直接オフにするかの2つの方法で削除されます.Activityが再びユーザーに表示される場合は、前の状態を再開してリセットする必要があります.ライフサイクルのサイクルには3つの重要な問題があります.1、ライフサイクル全体:onCreate(Bundle);onDestroy()に始まります.終わります.ActivityはonCreate(Bundle)ですべてのグローバル状態をonDestroy()に設定し、すべてのリソースを解放します.2、見えるライフサイクル:onStrat()から;onStop()に開始します.終わります.この間、Activityはフロントにいない可能性があるにもかかわらず、ユーザーと対話できない画面に表示されます.この2つのインタフェースの間には、ユーザに表示されるUIデータやリソースなどを保持する必要がある.3、フロントのライフサイクル:onResume();onPause()に開始します.最後に,この間,このActivityはすべてのActivityの先頭にあり,ユーザと対話する.Activityはresumedとpaused状態の間を頻繁に切り替えることができる.次のインタフェースは、Activityのライフサイクル全体のメソッドを定義します.
要求されたActivity:
public class Activity extends ApplicationContext{
protected void onCreate(Bundle icicle);
protected void onStart();
protected void onRestart();
protected void onResume();
protected void onFreeze(Bundle outIcicle);
protected void onPause();
protected void onStop();
protected void onDestroy();
}
//
package com.example.lifetcycle;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
/* Activity , */
public class MainActivity extends Activity {
/* activity, UI */
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.i("MainActivity", " :onCreate()");
/* ,Activity */
Button btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent);
}
});
}
/* */
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
Log.i("MainActivity", " :onStart()");
}
/* */
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
Log.i("MainActivity", " :onRestart()");
}
/* */
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
Log.i("MainActivity", " :onResume()");
}
/* *//* activity */
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
Log.i("MainActivity", " :onPause()");
}
/* */
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
Log.i("MainActivity", " :onStop()");
}
/* */
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Log.i("MainActivity", " :onDestroy()");
}
}
要求されたActivity:
import android.app.Activity;
import android.os.Bundle;
public class SecondActivity extends Activity {
/* */
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
}
}