본문 바로가기
Android/안드로이드 기본지식

안드로이드 onSaveInstanceState

by 붕어사랑 티스토리 2021. 7. 8.
반응형

onSaveInstanceState 이게뭐임?

안드로이드 액티비티는 다양하게 종료될 수 있음. 예를들어 스마트폰의 메모리가 부족할경우 안드로이드는 실행되고있는 앱들을 죽이기 시작함. 이때 앱이 죽기전에 엉엉 울면서 onSaveInstanceState라는 메소드에 자신의 유산을 남기고 죽을 수 있음.

 

 

어케씀?

1. 액티비티 클래스에 onSaveInstanceState 를 오버라이딩 하셈

2. 남기고 싶은 데이터를 key, value 쌍으로 Bundle에 저장한다

3. 액티비티 onCreate때 onSaveInstanceState 에서 key값으로 유산을 찾으면 됨

 

예제좀

 

  • 다음예제는 앱이 죽기전에 사랑했던 물고기의 이름을 남기는 예제이다
  • 앱은 죽기전에 "내가 사랑했던 물고기" 라는 key값과 "붕어"라는 value를 Bundle에 putString 메소드로 저장한다
  • 앱이 onCreate될때 savedInstanceState값이 null이면 앱이 최초실행된 것이고 null이 아니면 앱이 환생한것
  • 앱은 환생한 후 그가 죽기전에 사랑했던 물고기의 이름을 savedInstanceState에 "내가 사랑했던 물고기" 라는 key값으로 그녀의 이름을 찾는다

 

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    	super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        Log.i(TAG, "태어났다");
        
        if (savedInstanceState == null) {
            Log.i(TAG, "인생은 처음임");
        } else {
            Log.i(TAG, "환생했음");
            String herName = savedInstanceState.getString("내가 사랑했던 물고기");
            Log.i(TAG,"내가 사랑했던 물고기의 이름은... " + herName);
        }
    }
    @Override
    protected void onSaveInstanceState(@NonNull Bundle outState) {
        super.onSaveInstanceState(outState);
        Log.i(TAG, "나는 붕어를 사랑했어... 다시태어나도 만날 수 있을까");
        outState.putString("내가 사랑했던 물고기", "붕어");
    }
    
}

 

 

 

 

반응형

댓글