[Android] Fragment간 데이터 전달

RecyclerView의 특정 항목을 누르면 MainActivity에서 RecyclerView가 존재하는 프래그먼트를 상세 항목을 보여주는 프래그먼트의 새로운 인스턴스로 교체하여 선택된 데이터의 상세 내역을 보여주도록 해보자. 이를 위해선 아래의 방법들을 알고 있어야 한다.

  • 호스팅 액티비티가 프래그먼트들을 바꿔치기해서 이동을 구현하는 방법
  • 프래그먼트 인자 fragment argument 를 사용해서 프래그먼트 인스턴스에게 데이터를 전달하는 방법
  • UI 변경에 따라 LiveData를 변환 transform 하는 방법
자세히 보기

[Android] 데이터베이스와 Room 라이브러리

거의 모든 애플리케이션은 장시간 동안 데이터를 저장할 곳이 필요하다. 본문에서는 Room 라이브러리를 사용해서 앱의 데이터베이스를 쿼리할 수 있는 코드를 구현하고, 데이터베이스로부터 데이터를 가져와서 리스트에 보여주도록 한다.

ViewModel과 SIS에서 장치 회전 및 프로세스 종료 시에 ViewModel과 SIS Saved Instance Status를 사용해서 일시적인 UI 상태 데이터를 지속하는 방법을 기술했다. ViewModel과 SIS는 UI와 관련된 적은 수의 데이터에는 아주 좋지만 UI와 결부되지 않는 데이터의 저장에는 사용할 수 없다. 또한, 액티비티나 프래그먼트 인스턴스에 연관되지 않으면서 UI 상태와 무관하게 영구적으로 지속할 필요가 있는 데이터의 저장에도 사용할 수 없다.

자세히 보기

[Android] Fragment와 FragmentManager

UI 유연성의 필요

UI 유연성이라하면 사용자나 장치가 요구하는 것에 따라 런타임 시에 액티비티의 뷰를 구성하거나 변경할 수 있는 능력이다. 그런데 액티비티는 이런 유연성을 제공하도록 설계되지 않았다. 액티비티의 뷰들은 런타임 시에 변경되며, 이 뷰들을 제어하는 코드는 액티비티 내부에 있어야 한다. 따라서 액티비티는 사용하는 특정 화면과 강하게 결합되어 있다.

자세히 보기

[Android] Intent, 액티비티 간 데이터 전달

액티비티 시작시키기

startActivity(Intent)는 시작시키고자 하는 액티비티에 대해 호출하는 static 함수라고 생각할지도 모르겠지만 그렇지 않다. 액티비티에서 startActivity(Intent)를 호출하면 이 호출은 안드로이드 운영체제에게 전달된다.

자세히 보기

[Android] Intent: 액티비티 간 데이터 전달

액티비티 시작시키기

startActivity(Intent)는 시작시키고자 하는 액티비티에 대해 호출하는 static 함수라고 생각할지도 모르겠지만 그렇지 않다. 액티비티에서 startActivity(Intent)를 호출하면 이 호출은 안드로이드 운영체제에게 전달된다.

자세히 보기

[Android] ViewModel과 SIS

안드로이드는 적절한 시점에 대체 리소스를 제공하지만, 장치 회전에 따른 액티비티 소멸 및 재생성은 문제가 생길 수 있다. 회전 시 데이터가 초기화되는 결함을 해결하려면, 장치 회전 후에 재생성되는 MainActivity 인스턴스가 초기화 되는 데이터의 직전 값을 알아야 한다. 그러려면 장치 회전과 같은 런타임 구성 변경 시에 해당 데이터를 보존할 방법이 필요하다.

ViewModel에 UI 데이터를 저장해 UI 상태가 유실되는 결함을 해결할 수 있다. 또한, 이보다는 덜 생기지만 여전히 문제가 많은 결함인 ‘프로세스 종료에 따른 UI 상태 유실’도 안드로이드의 인스턴스 상태 보존 메커니즘을 사용해 해결한다.

자세히 보기

[Android] ViewModel과 SIS

안드로이드는 적절한 시점에 대체 리소스를 제공하지만, 장치 회전에 따른 액티비티 소멸 및 재생성은 문제가 생길 수 있다. 회전 시 데이터가 초기화되는 결함을 해결하려면, 장치 회전 후에 재생성되는 MainActivity 인스턴스가 초기화 되는 데이터의 직전 값을 알아야 한다. 그러려면 장치 회전과 같은 런타임 구성 변경 시에 해당 데이터를 보존할 방법이 필요하다.

ViewModel에 UI 데이터를 저장해 UI 상태가 유실되는 결함을 해결할 수 있다. 또한, 이보다는 덜 생기지만 여전히 문제가 많은 결함인 ‘프로세스 종료에 따른 UI 상태 유실’도 안드로이드의 인스턴스 상태 보존 메커니즘을 사용해 해결한다.

자세히 보기

[Android] 액티비티 생명주기

액티비티 상태와 생명주기 콜백

Activity의 모든 인스턴스는 생명주기를 갖는다. 그리고 생명주기 동안에 액티비티는 네 가지 상태, 즉 실행 재개(resumed), 일시 중지(paused), 중단(stopped), 존재하지 않음(non-existent)으로 상호 전환된다. 또한, 각 전환이 발생할 때 액티비티에 상태 변경을 알려주는 Activity 함수들이 있으며, 이 함수들은 안드로이드가 자동 호출한다.

자세히 보기