[Android] 암시적 인텐트

안드로이드에서는 인텐트 intent 를 사용해 장치의 다른 앱에 있는 액티비티를 시작시킬 수 있다. 명시적 인텐트 explicit intent 에서는 시작시킬 액티비티 클래스를 지정하면 안드로이드 운영체제가 해당 액티비티를 시작시킨다. 반면에 암시적 인텐트 implicit intent 에서는 해야 할 작업을 알려주면 안드로이드 운영체제가 이 작업을 수행하는 데 적합한 앱의 액티비티를 찾아서 시작시킨다.

본문에서는 ① 암시적 인텐트를 사용해서 사용자의 연락처에서 범죄 용의자를 한 명 선택하고, ② 텍스트 형태의 범죄 보고서를 전송할 수 있게 한다. 이때 사용자는 장치에 설치된 연락처 앱과 텍스트 전송 앱을 선택해 사용할 수 있다.

자세히 보기

[Android] 앱 바와 메뉴

잘 디자인된 안드로이드 앱에서 중요한 컴포넌트 중 하나가 앱 바 app bar 다. 앱 바는 사용자가 수행할 수 있는 액션과 화면 간을 이동할 수 있는 매커니즘을 제공한다. 더불어 디자인의 일관성도 제공한다.

앱 바는 액션 바 action bar 또는 툴바 toolbar 자세한 내용은 앱 바 vs 액션 바 vs 툴바 에서 다룬다.

자세히 보기

[Android] Dialog - 대화상자

대화상자 Dialog 는 사용자의 주의를 끌고 입력을 받는 데 사용되며 사용자의 선택을 받거나 중요한 정보를 보여줄 때도 유용하다.

범죄 발생일자를 선택하는 대화상자

자세히 보기

[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 상태와 무관하게 영구적으로 지속할 필요가 있는 데이터의 저장에도 사용할 수 없다.

자세히 보기