JAVA/Android
[JAVA][Android] 액티비티 종료 전 주요 데이터를 Bundle에 저장하여 재활용하기
너지구
2022. 6. 21. 12:02
이번 포스팅은 안드로이드 앱이 의도치 않게 죽었을 때, 마지막 시점의 필요한 데이터를 저장해두는 방법에 대해 정리한다.
이 기능을 활용하여 중단된 액티비티를 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 객체에서 데이터를 추출하여 화면을 구성하거나, 재사용하면 된다.