본문 바로가기

분류 전체보기

(53)
안드로이드 paging 3.0 #2 - LoadState #1 에선 기본적인 Paging3을 구현하였고 여기선 Paging3 에서 LoadStateAdapter, LoadState 를 알아보려 한다. ( #1에 포함된 코드는 적지 않음. ) 시작하기 위의 예제를 만드어보려 한다. LoadState sealed class LoadState( val endOfPaginationReached: Boolean ) { ... class NotLoading( endOfPaginationReached: Boolean ) : LoadState(endOfPaginationReached) { ... } object Loading : LoadState(false) { ... } class Error( val error: Throwable ) : LoadState(false) { ..
안드로이드 Paging 3.0 #1 - 맛보기 Paging 라이브러리란? 페이징을 쉽게 구현하기 위해 안드로이드에서 제공하는 라이브러리이다. 최근 3.0 Alpha 버전이 릴리즈 되었단 걸 알게 되었다. Paging2와 변한 점 DataSource 관련 코드가 PagingSource 하나로 통합되었다. Header, Footer, separator를 넣을 수 있는 코드 (insertHeaderItem, insertFooterItem, insertSeparators)가 추가되었다. 로딩 처리를 쉽게 할 수 있다. 데이터 refresh 에 대한 처리가 추가되었다. 로딩 시 발생하는 에러 처리를 쉽게 할 수 있다. 더 이상 Config 생성 방식이 빌더 패턴이 아니다. 데이터의 캐싱이 가능하다. 위에 7가지 정도가 바뀌었다. 기존 Paging 보단 코드가..
Dagger - Hilt 간보기 Hilt 란? Hilt는 기존 Dagger2를 보일러 플레이트 코드를 제거하기 위해 안드로이드의 구조에 맞춰 몇 가지 Annotaion을 추가한 라이브러리이다. 안드로이드 11 프리뷰에서 Hilt 를 공식적으로 Jetpack에 합류시킨다고 발표했다. 간단한 예제와 함께 살펴보자. 1. 시작하기 /-- build.gradel(project) --/ classpath 'com.google.dagger:hilt-android-gradle-plugin:2.28-alpha' ------------------------------------------------------------------------------- /-- build.gradel(app) --/ apply plugin: 'dagger.hilt.an..
Android 에서 미리보기 ( Open Graph ) 만들기 앱을 사용하다 보면 링크들에 대해서 미리보기를 만들어 주는 경우가 있는데, 이럴 때 사용되는 게 바로 OpenGraph 이다. 그래서 Open Graph 가 간단하게 뭐냐? html 의 head 안에 있는 meta 정보중에 " og " 란 prefix 가 붙은 이 녀석들이 바로 openGraph 이다 property 의 종류는 아래 공식 사이트에서 정의 하고 있다. Open Graph protocol The Open Graph protocol enables any web page to become a rich object in a social graph. ogp.me 그럼 Android 에선 어떻게 하냐? 기본적으로 많이 알려진 내용은 Jsoup 을 사용하는 방법인데, 너무 많다. 그리고 난 이거 하나 ..
Android 에서 Firebase Test Lab 로그인 하기 참고: 테스트 대상 앱 외부의 사용자 작업은 Robo 스크립트 기록으로 캡처되지 않습니다. 예를 들어 Facebook, Twitter, 기타 소셜 앱을 통한 로그인은 기록되지 않습니다. 위의 글을 읽고 로그인 기반 앱에서 3rd party 로그인을 사용하면 사전 출시 보고서에서 로그인을 뚫고 테스트를 할 수 없.. 는 줄 알았다. val isFromTestLab = Settings.System.getString(contentResolver, "firebase.test.lab") if (isFromTestLab == "true") { // do setting } 해결