▶ 액티비티의 상태 메소드
상태메소드 |
설명 |
onCreate() |
액티비티가 처음에 만들어졌을 때 호출됨 화면에 보이는 뷰들의 일반적인 상태를 설정하는 부분 이전 상태가 저장되어 있는 경우에는 번들 객체를 참조하여 이전 상태 복원 가능 이 메소드 다음에는 항상 onStart() 메소드가 호출됨 |
onStart() |
액티비티가 화면에 보이기 바로 전에 호출됨 액티비티가 화면 상에 보이면 이 메소드 다음에 onResume() 메소드가 호출됨 액티비티가 화면에서 가려지게 되면 이 메소드 다음에 onStop() 메소드가 호출됨 |
onResume() |
액티비티가 사용자와 상호 작용하기 바로 전에 호출됨 |
onRestart() |
액티비티가 중지된 이후에 호출되는 메소드로 다시 시작되기 바로 전에 호출됨 이 메소드 다음에는 항상 onStart() 메소드가 호출됨 |
onPause() |
또 다른 액티비티를 시작하려고 할 때 호출됨 저장되지 않은 데이터를 저장소에 저장하거나 애니메이션 중인 작업을 중지하는 등의 기능을 수행하는 메소드임 이 메소드가 리턴하기 전에는 다음 액티비티가 시작될 수 없으므로 이 작업은 매우 빨리 수행 된 후 리턴되어야 함 액티비티가 이 상태에 들어가면 시스템은 액티비티를 강제 종료할 수 있음 |
onStop() |
액티비티가 사용자에게 더 이상 보이지 않을 때 호출됨 액티비티가 소멸되거나 또 다른 액티비티가 화면을 가릴 때 호출됨 액티비티가 이 상태에 들어가면 시스템은 액티비티를 강제 종료할 수 있음 |
onDestroy() |
액티비티가 소멸되어 없어지기 전에 호출됨 위의 두가지 경우를 구분할 때 isFinishing()메소드를 이용함 액티비티가 이 상태에 들어가면 시스템은 액티비티를 강제 종료할 수 있음 |
▶ 예제 : SampleLifeCycleActivity.java
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class SampleLifeCycleActivity extends Activity {
public static final String PREF_ID = "Pref01";
public static final int actMode = Activity.MODE_PRIVATE;
EditText txtMsg;
Button btnFinish;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
txtMsg = (EditText) findViewById(R.id.txtMsg);
btnFinish = (Button)findViewById(R.id.btnFinish);
btnFinish.setOnClickListener(new Button.OnClickListener () {
public void onClick(View v) {
finish();
}
});
Toast.makeText(getBaseContext(), "onCreate ...", Toast.LENGTH_LONG).show();
}
@Override
protected void onDestroy() {
super.onDestroy();
//clearMyPrefs();
Toast.makeText(getBaseContext(), "onDestroy ...", Toast.LENGTH_LONG).show();
}
@Override
protected void onPause() {
super.onPause();
saveCurrentState();
Toast.makeText(getBaseContext(), "onPause ...", Toast.LENGTH_LONG).show();
}
@Override
protected void onRestart() {
super.onRestart();
Toast.makeText(getBaseContext(), "onRestart ...", Toast.LENGTH_LONG).show();
}
@Override
protected void onResume() {
super.onResume();
restoreFromSavedState();
Toast.makeText(getBaseContext(), "onResume...", Toast.LENGTH_LONG).show();
}
@Override
protected void onStart() {
super.onStart();
Toast.makeText(getBaseContext(), "onStart ...", Toast.LENGTH_LONG).show();
}
@Override
protected void onStop() {
super.onStop();
Toast.makeText(getBaseContext(), "onStop ...", Toast.LENGTH_LONG).show();
}
protected void restoreFromSavedState() {
SharedPreferences myPrefs = getSharedPreferences(PREF_ID, actMode);
if ((myPrefs != null) && (myPrefs.contains("txtMsg")) ){
String myData = myPrefs.getString("txtMsg", "");
txtMsg.setText(myData);
}
}
protected void saveCurrentState() {
SharedPreferences myPrefs = getSharedPreferences(PREF_ID, actMode);
SharedPreferences.Editor myEditor = myPrefs.edit();
myEditor.putString( "txtMsg", txtMsg.getText().toString() );
myEditor.commit();
}
protected void clearMyPrefs() {
SharedPreferences myPrefs = getSharedPreferences(PREF_ID, actMode);
SharedPreferences.Editor myEditor = myPrefs.edit();
myEditor.clear();
myEditor.commit();
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
Toast.makeText(getBaseContext(), "onRestoreInstanceState called.", Toast.LENGTH_LONG).show();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Toast.makeText(getBaseContext(), "onSaveInstanceState called.", Toast.LENGTH_LONG).show();
}
}
[Android]브로드캐스트 수신자 (0) | 2012.08.12 |
---|---|
[Andrid] Service 예제 (1) | 2012.08.12 |
[Android] Parcelable 인터페이스 (0) | 2012.08.11 |
[Android] Activity 와 Stack Flag (0) | 2012.08.11 |
[Android]Intent 예제 (0) | 2012.08.11 |
댓글 영역