본문 바로가기

JAVA/Android

[JAVA][Android] 액티비티 종료 전 주요 데이터를 Bundle에 저장하여 재활용하기

이번 포스팅은 안드로이드 앱이 의도치 않게 죽었을 때, 마지막 시점의 필요한 데이터를 저장해두는 방법에 대해 정리한다.

이 기능을 활용하여 중단된 액티비티를 resume했을 때 저장된 데이터를 이용하여 화면을 재구성 할 수 있다.

@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
    outState.putBoolean("BUNDLE_BOOL",true);
    outState.putString("BUNDLE_STRING","hello!");
    outState.putInt("BUNDLE_INT",100);
    outState.putLong("BUNDLE_LONG",100.0);

    super.onSaveInstanceState(outState);
}

위에 작성된 onSaveInstanceState 메소드를 오버라이딩 하여, 번들에 원하는 데이터를 저장하면 된다.

그럼 액티비티가 소멸될 때, 자동으로 해당 데이터가 번들에 저장된다.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    getBundleData(savedInstanceState)
}

그 후, 만약 해당 액티비티가 다시 생성되면,

onCreate 메소드에 인자로 들어있는 savedInstanceState에 저장한 데이터가 들어있다.

다른 메소드로 번들을 보내 데이터 작업을 처리하겠다.


private void getBundleData(Bundle savedBundle){

    if(savedBundle!=null){
    	String data_str = savedBundle.getString("BUNDLE_STRING");
        boolean data_bool = savedBundle.getString("BUNDLE_BOOL");
        int data_int = savedBundle.getString("BUNDLE_INT");
        long data_long = savedBundle.getString("BUNDLE_LONG");
    }
    
}

위와 같이 bundle 객체에서 데이터를 추출하여 화면을 구성하거나, 재사용하면 된다.