Android

Android

Codelab으로 LiveData transform해보기 - 3. 정리(完)

Transforming LiveData LiveData에 transformation을 하고 싶다면 Transformations 클래스의 helper 메소드들을 사용한다. Transformations.map 메소드는 LiveData에 데이터를 변경하고 다른 LiveData 객체를 리턴해준다. Displaying the result of a transformation in a TextView 원본 데이터가 ViewModel의 LiveData로 정의되어 있는지 확인한다. 변수를 정의한다. 어떤 변수가 있다면 Transformations.map 메소드로 transformation을 수행하고 그 값을 변수에 리턴해준다. val newResult = Transformations.map(someLiveData) { ..

Android

Codelab으로 LiveData transform해보기 - 2. Add transformation for the LiveData

Transformations.map 메소드는 원본 LiveData의 데이터를 수정하고 결과 LiveData 객체를 리턴하는 방법을 제공한다. 이 transformations은 리턴된 옵저버가 LiveData 객체를 observe하고 있지 않으면 계산되지 않는다. - 주의사항 : Transformations.map 메소드에서 실행되는 람다식은 메인 스레드에서 실행되기 때문에 오래 실행되는 task를 포함하면 안된다. 이번에는 경과 시간의 LiveData 객체를 "MM:SS" 형식의 새 문자열 LiveData 객체 형태로 만든다. game_fragment.xml 레이아웃 파일은 이미 타이머 텍스트뷰를 가지고 있다. 지금까지 텍스트뷰에 보여줄 텍스트가 없었으므로 타이머 텍스트가 보이지 않았다. 1. GameV..

Android

Codelab으로 LiveData transform해보기 - 1. Add a Timer

이번에는 이전에 수정한 GuessTheWord 앱에 카운트다운을 위한 타이머를 추가한다. 단어 리스트가 비어있으면 게임이 끝나는 대신 타이머가 끝날 때 게임이 끝나도록 할 것이다. 이 때 사용될 유틸리티 클래스를 안드로이드에서는 제공하는데 CountDownTimer가 있다. 기기 설정 변경 도중 타이머가 destroy되지 않도록 ViewModel에 해당 로직을 추가한다. 프래그먼트는 타이머가 작동할 때마다 텍스트뷰를 업데이트하는 코드를 포함하고 있다. GameViewModel 클래스에 아래 과정을 따라 구현한다. 1. 타이머 상수를 갖고 있기 위해 companion object를 만든다. companion object { // Time when the game is over private const va..

Android

Codelab으로 DataBinding 알아보기 - 4. 정리(完)

데이터 바인딩 라이브러리는 LiveData나 ViewModel같은 AAC와 아주 매끄럽게 동작한다. ViewModel data binding 데이터 바인딩을 사용해 ViewModel과 레이아웃을 연결할 수 있다. ViewModel 객체는 UI 데이터를 가지고 있다. ViewModel 객체를 데이터 바인딩에 전달함으로써 뷰와 ViewModel 객체 사이의 통신을 일부 자동화할 수 있다. 아래는 ViewModel과 레이아웃을 연결하는 방법이다. 레이아웃 파일에 ViewModel 타입의 데이터 바인딩 변수를 추가한다. Fragment 파일안에 ViewModel을 데이터 바인딩에 전달한다. binding.gameViewModel = viewModel Listener bindings 리스너 바인딩은 레이아웃에서 ..

Android

Codelab으로 DataBinding 알아보기 - 3. Add LiveData to data binding

데이터 바인딩은 ViewModel 객체와 같이 사용되는 LiveData와 잘 작동한다. 저번 코드랩에서 ViewModel 객체에 데이터 바인딩을 추가했으므로 LiveData를 적용할 준비가 됐다. Add word LiveData to the game_fragment.xml file 이번에는 word 텍스트뷰를 ViewModel안에 있는 LiveData와 직접 바인드한다. 1. xml의 word_text에 text 속성을 추가해준다. 바인딩 변수를 사용해 GameViewModel의 word LiveData 객체로 설정한다. 여기서 우리는 word.value를 사용할 필요가 없다. 대신, 실제 LiveData 객체를 사용할 수 있다. 만약 word 값이 null이면 빈 문자열을 보여줄 것이다. 2. Game..

Android

Codelab으로 DataBinding 알아보기 - 2. Add ViewModel data binding

우리는 사실 이전 코드랩에서 데이터바인딩을 사용했지만 이는 뷰에 접근할 때, 안전한 방식으로만 사용했다. 하지만, 데이터바인딩의 정수는 이름에서 알 수 있듯이 데이터를 뷰 객체에 직접 바인딩하는 것이다. 현재 우리가 수정한 앱의 구조는 뷰들은 xml에 정의되어 있고, 뷰들을 위한 데이터는 ViewModel에서 가지고 있다. 그리고 각 뷰와 ViewModel 사이에는 UI controller가 있다. 이 때, UI controller를 중개인처럼 사용하지 않고 레이아웃의 뷰가 ViewModel 객체의 데이터와 직접 통신한다면 더 간단할 것이다. ViewModel 객체를 데이터 바인딩으로 전달하면 뷰와 ViewModel 객체 간의 통신을 어느 정도 자동화할 수 있다. Add data binding for t..

Android

Codelab으로 DataBinding 알아보기 - 1. 과정 소개

나는 Codelab으로 알아보기 시리즈를 작성하면서 지금까지 GuessTheWord 앱을 수정해왔다. ViewModel을 추가했고, LiveData도 추가했다. 하지만, 앱은 이미 DataBinding을 사용하고 있었는데 이에 대해 소개하지 않았다. 나도 해당 과정을 막연히 따라가다보니 의문점으로만 남겨두었는데 이제서야 소개하게 되었다. 일단 이번 과정에서 다룰 내용은 다음과 같다. DataBinding 라이브러리 요소 사용법을 공부한다. ViewModel, LiveData와 통합하는 법을 공부한다. Fragment에서 클릭 리스너를 대체하기 위해 리스너를 바인딩하는 방법을 공부한다. 데이터바인딩 표현식에 문자열 형식을 추가하는 방법을 공부한다. 빠르게 다음 글로 찾아오도록 노력해보겠다.

Android

안드로이드 FCM 백그라운드 푸시 알림 받기

오늘 적어볼 주제는 내가 하루종일 고민했던 문제이다. 제목을 오해할 사람도 있을 것 같은데 설명을 추가하자면 앱이 백그라운드일 때 푸시 알림을 카카오톡처럼 받는 기능이다. 안드로이드 공식 사이트에서 부르는 이름은 헤드업 notification이다. 여기서 "카카오톡처럼이 뭔데;" 라고 할 사람은 보면 바로 이해할만한 스크린샷을 하나 준비했다. 이제 다들 내가 원한 기능을 이해했을 것이라 믿는다. 앱이 실행 중일 때는 헤드업 알림이 제대로 동작하는데 앱이 백그라운드로 진입 시 헤드업 알림이 오지 않았다. 여기서 수상했던 건 해당 앱의 알림 설정에 들어가 알림 카테고리를 확인하면 Miscellaneous라는 이름으로 알림이 왔다. 그리고 Miscellaneous를 클릭하면 앱 아이콘 배지 설정이 꺼져있었다...

Android

카카오톡 공유 앱 이름 바꾸기

개인 프로젝트를 진행하며 실험을 통해 알아낸 방법이다. 내가 공식 문서를 제대로 안 읽어서 못 찾은 내용일 수 있다. 먼저, 내가 말하는 카카오톡 공유 기능은 아래 사진과 같다. 여기서 내가 바꾸고 싶은 부분은 구매하기, 공유하기 버튼 밑에 있는 "카카오스타일" 이라는 부분이다. 저게 뭐라고 그러는걸까 별 생각없이 넘어갈 사람도 있겠지만 이상한 텍스트가 써있으면 위화감이 들 것 같았다. 내가 찾은 방법을 공유해보겠다. 1. kakao developers에 로그인한다. 2. 내 애플리케이션으로 이동한다. 3. 일반 탭에 들어가 앱 이름을 바꾼다. 그럼 해결!! 이렇게 끝내고 싶었는데 앱 이름 옆에 아이콘도 없어 불편했다. 이 문제는 똑같은 일반 탭에서 앱 아이콘을 등록해주면 된다.

Android

Codelab으로 LiveData 알아보기 - 8. 정리(完)

LiveData LiveData는 생명 주기를 인식하는 관찰 가능한 데이터 홀더 클래스이다. 데이터가 업데이트될 때 UI가 자동으로 업데이트되도록 LiveData를 사용할 수 있다. LiveData는 데이터를 감싸서 가지고 있다. LiveData는 생명 주기를 인식하는데 이는 started, resumed 같이 활성 상태에 있는 옵저버만 업데이트를 한다. LiveData를 추가하기 위해 ViewModel에 있는 데이터 변수를 LiveData 혹은 MutableLiveData로 변경한다. MutableLiveData는 값이 변경 가능한 LiveData 객체이다. MutableLiveData는 제네릭 클래스이기에 어떤 데이터를 가지고 있는지 명시해주어야 한다. LiveData가 가지고 있는 데이터 값을 변경..

BonusTrack02.dev
'Android' 카테고리의 글 목록 (5 Page)