[Android] Intent, 액티비티 간 데이터 전달
액티비티 시작시키기
startActivity(Intent)는 시작시키고자 하는 액티비티에 대해 호출하는 static 함수라고 생각할지도 모르겠지만 그렇지 않다. 액티비티에서 startActivity(Intent)를 호출하면 이 호출은 안드로이드 운영체제에게 전달된다.
[Android] Intent, 액티비티 간 데이터 전달
startActivity(Intent)는 시작시키고자 하는 액티비티에 대해 호출하는 static 함수라고 생각할지도 모르겠지만 그렇지 않다. 액티비티에서 startActivity(Intent)를 호출하면 이 호출은 안드로이드 운영체제에게 전달된다.
[Android] Intent: 액티비티 간 데이터 전달
startActivity(Intent)는 시작시키고자 하는 액티비티에 대해 호출하는 static 함수라고 생각할지도 모르겠지만 그렇지 않다. 액티비티에서 startActivity(Intent)를 호출하면 이 호출은 안드로이드 운영체제에게 전달된다.
자바 플랫폼에서는 클래스가 equals, hashCode, toString 등의 메소드를 구현해야 한다. 다행히 자바 IDE들이 이런 메소드를 자동으로 생성해주긴 하지만 코드베이스가 번잡해지는건 변함이 없다.
코틀린 컴파일러는 한걸음 더 나가서 이런 메소드를 기계적으로 생성하는 작업을 보이지 않는 곳에서 해주기 때문에 필수 메소드로 인한 번잡함 없이 소스코드를 깔끔하게 유지 가능하다.
자바 플랫폼에서는 클래스가 equals, hashCode, toString 등의 메소드를 구현해야 한다. 다행히 자바 IDE들이 이런 메소드를 자동으로 생성해주긴 하지만 코드베이스가 번잡해지는건 변함이 없다.
코틀린 컴파일러는 한걸음 더 나가서 이런 메소드를 기계적으로 생성하는 작업을 보이지 않는 곳에서 해주기 때문에 필수 메소드로 인한 번잡함 없이 소스코드를 깔끔하게 유지 가능하다.
안드로이드는 적절한 시점에 대체 리소스를 제공하지만, 장치 회전에 따른 액티비티 소멸 및 재생성은 문제가 생길 수 있다. 회전 시 데이터가 초기화되는 결함을 해결하려면, 장치 회전 후에 재생성되는 MainActivity 인스턴스가 초기화 되는 데이터의 직전 값을 알아야 한다. 그러려면 장치 회전과 같은 런타임 구성 변경 시에 해당 데이터를 보존할 방법이 필요하다.
ViewModel에 UI 데이터를 저장해 UI 상태가 유실되는 결함을 해결할 수 있다. 또한, 이보다는 덜 생기지만 여전히 문제가 많은 결함인 ‘프로세스 종료에 따른 UI 상태 유실’도 안드로이드의 인스턴스 상태 보존 메커니즘을 사용해 해결한다.
안드로이드는 적절한 시점에 대체 리소스를 제공하지만, 장치 회전에 따른 액티비티 소멸 및 재생성은 문제가 생길 수 있다. 회전 시 데이터가 초기화되는 결함을 해결하려면, 장치 회전 후에 재생성되는 MainActivity 인스턴스가 초기화 되는 데이터의 직전 값을 알아야 한다. 그러려면 장치 회전과 같은 런타임 구성 변경 시에 해당 데이터를 보존할 방법이 필요하다.
ViewModel에 UI 데이터를 저장해 UI 상태가 유실되는 결함을 해결할 수 있다. 또한, 이보다는 덜 생기지만 여전히 문제가 많은 결함인 ‘프로세스 종료에 따른 UI 상태 유실’도 안드로이드의 인스턴스 상태 보존 메커니즘을 사용해 해결한다.
Activity의 모든 인스턴스는 생명주기를 갖는다. 그리고 생명주기 동안에 액티비티는 네 가지 상태, 즉 실행 재개(resumed), 일시 중지(paused), 중단(stopped), 존재하지 않음(non-existent)으로 상호 전환된다. 또한, 각 전환이 발생할 때 액티비티에 상태 변경을 알려주는 Activity 함수들이 있으며, 이 함수들은 안드로이드가 자동 호출한다.
Activity의 모든 인스턴스는 생명주기를 갖는다. 그리고 생명주기 동안에 액티비티는 네 가지 상태, 즉 실행 재개(resumed), 일시 중지(paused), 중단(stopped), 존재하지 않음(non-existent)으로 상호 전환된다. 또한, 각 전환이 발생할 때 액티비티에 상태 변경을 알려주는 Activity 함수들이 있으며, 이 함수들은 안드로이드가 자동 호출한다.
Activity의 모든 인스턴스는 생명주기를 갖는다. 그리고 생명주기 동안에 액티비티는 네 가지 상태, 즉 실행 재개(resumed), 일시 중지(paused), 중단(stopped), 존재하지 않음(non-existent)으로 상호 전환된다. 또한, 각 전환이 발생할 때 액티비티에 상태 변경을 알려주는 Activity 함수들이 있으며, 이 함수들은 안드로이드가 자동 호출한다.