본문 바로가기

android

5. 안드로이드 Application 공식문서 공부

번역기와 챗지피티를 보고 공부한 것입니다. 틀린 것이 있다면 댓글 달아주세요.

 

  • Application 클래스는 액티비티 및 서비스와 같은 다른 모든 구성 요소를 포함하는 Android 앱 내의 기본 클래스 입니다.
  • Application 클래스 또는 Application 클래스의 하위 클래스는 애플리케이션/패키지에 대한 프로세스가 생성될 때 다른 클래스보다 먼저 인스턴스화됩니다.
  • 이 클래스는 첫번째 액티비티가 표시되기 전에 전역 상태를 초기화하는데 주로 사용됩니다.
  • 언제 사용해야 하는가?
    • 첫번째 액티비티를 생성하기 전에 실행해야하는 특수 작업
    • 모든 구성요소(충돌 보고,지속성)에서 공유해야 하는 전역 초기화
    • 공유 네트워크 클라이언트 객체와 같은 static immutable data(정적불변데이터)에 쉽게 엑세스하기 위한 static method
  • 변경 가능한 공유 데이터는 언제든지 사라지거나 유효하지 않게 될 수 있으므로Application 객체 내에 저장해서는 안된다.
  • 대신, 파일, SharedPreferences또는 SQLite와 같은 지속성 전략을 사용하여 변경 가능한 공유 데이터를 저장하세요.
  • 앱 내 여러 위치에는 항상 필요한 데이터와 정보가 있다.
  • 이는 세션 토큰, 값비싼 계산의 결과등일 수 있습니다.
  • 액티비티 간에 객체를 전달하거나 객체를 영구저장소에 유지하는 오버헤드를 피하기 위해 애플리케이션 인스턴스를 사용하고 싶은 유혹이 있을 수 있습니다.
  • 그러나 변경가능한 인스턴스 데이터를 Application 객체 내에 저장해서는 안된다.
  • 데이터가 거기에 유지될 것이라고 가정하면 애플리케이션이 어느 시점에서 NullPointerException으로 인해 필연적으로 충돌하게 되기 때문입니다.
  • Application 객체가 영원히 메모리에 남아있다는 보장은 없으며 종료됩니다.
  • 사용자가 다시 앱을 열때 앱 전체가 처음부터 다시 시작되는 것이 아니라  기존 상태와 일부 정보가 유지됩니다.
  • 안드로이드 시스템은 애플리케이션이 다시 시작될 때 새로운 Application 객체를 생성합니다.
  • 사용자가 앱을 종료후 다시 열면 시스템은 사용자가 이전에 어떤 액티비티에 있었는지를 추적하고 해당 액티비티로 부터 시작하여 애플리케이션을 재개한다. 
  • store data를 이렇게 저장해야한다.
    • 액티비티에게 데이터 전달할 때 : intent
    • shared preferences
    • Local Files
    • SQLite Database
    • ORM