기술 블로그

[안드로이드 복습]12장 액티비티 생명주기 본문

Android

[안드로이드 복습]12장 액티비티 생명주기

jaegwan 2018. 11. 19. 23:11
반응형

생명주기


onCreate() 액티비티 생성

onDestory() 액티비티 종료 //만약 종료시 무엇인가를 해야한다면 이것을 오버라이딩 


안드로이드 생명주기에 대한 이미지 검색결과


전체 수명은 onCreate()와 onDestroy()사이이며 

각각 앱의 초기화(레이아웃구성),리소스 해제를 수행한다. 


onResume()과 onPause()에서 다루는 내용은 가벼워야 한다. 상당히 빠르게 지나가므로 오래걸리는 처리는 피해야한다.


절전모드로 전환되거나 AlertDialog를 띄울때도 onPause()가 호출된다.


앱이 강제종료될때 적절한 처리를 하기위해 onStop()에서 처리한다. 


강제종료시에는 onPause()를 건너 뛰기 때문이다. 




onSaveInstanceState()콜백 메서드 활용 액티비티상태정보 저장하기 


이것을 사용하면 종료 직전에 이 콜백 메소드가 사용되면서 Bundle이라는 객체에 Map형태로 상태를 저장할 수 있다.


변수들 :

public class MainActivity extends AppCompatActivity {
public static final String PLAYER_SCORE = "playerScore";
public static final String PLAYER_LEVEL = "playerLevel";
private TextView mLevelText;
private TextView mScoreText;

private int mlevel = 0 ;
private int mScore = 0 ;



상태저장 : ondestroy직전  , pause와 stop사이에 항상실행

@Override
protected void onSaveInstanceState(Bundle outState) { //콜백메서드, 번들에 데이터들을 담을 수 있는데 outState에 담는다.
outState.putInt(PLAYER_SCORE,mScore);
outState.putInt(PLAYER_LEVEL,mlevel);

super.onSaveInstanceState(outState); //항상 슈퍼클래스의 메서드를 호출해야한다.
}



상태복원: oncreate직후  강제종료시에만 실행 //이 메서드를 사용안하고oncreate에서 savedInstanceState null체크로 사용 가능 

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState); //널체크 안해도자동복원
mlevel= savedInstanceState.getInt(PLAYER_LEVEL);
mScore= savedInstanceState.getInt(PLAYER_SCORE);
mLevelText.setText("레벨:"+mlevel);
mScoreText.setText("점수:"+mScore);
}





혹은 화면회전을 막는 작업:

<activity android:name=".MainActivity"
android:screenOrientation="portrait">

매니페스트에 엑티비티에 screenOrientation속성 추가 


landscape : 가로

portrait : 세로

반응형
Comments