activity가 메모리 부족으로 파괴되었을 때

조회수 1885회

Activity가 destroy되었을 때 다시 실행해서 복구되는 과정에서 위 Activity를 실행하면서 사용한 Intent(정확히는 인텐트에 담긴 번들)도 복구가 되나요? 복구가 된다면 복구 시점은 Destroy되는 시점의 데이터인가요? 아님 startActivity를 한 시점의 데이터인가요?

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 메모리 부족으로 액티비티가 종료된 후 다시 복원될 때, 안드로이드는 기본적으로 View의 상태만(android:id가 존재하는 경우) 관리(저장/복원)합니다. 따라서 액티비티를 실행하면서 사용한 Intent의 Bundle 중 필요한 정보는 다음 함수를 이용해 직접 저장하고, 복원하는 형태로 구현해야 됩니다.

    • onSaveInstanceState(Bundle savedInstanceState)
      • 이 함수는 시스템에 의해 액티비티가 종료될 때 호출됩니다. 정확한 시점은 onDestroy() 함수가 호출되기 직전에 불리며 이곳에서 Bundle 객체에 원하는 데이터를 저장할 수 있습니다.
    • onRestoreInstanceState(Bundle savedInstanceState)
      • 액티비티가 복원된 경우, onStart() 함수 이후에 호출됩니다. 복원의 경우는 onCreate(Bundle savedInstanceState) 함수의 savedInstanceState 파라미터를 통해서도 처리할 수 있습니다. 다만 이때는 null 여부를 체크해야 합니다.

    이 부분에 대한 샘플 코드 및 좀 더 자세한 내용은 다음 문서를 참고하시기 바랍니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)