일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Hilt
- Gradle
- GitHub
- 프로그래머스
- androidStudio
- Python
- android
- boj
- relay
- Rxjava
- Coroutine
- MiTweet
- 코드포스
- 암호학
- 백준
- Compose
- architecture
- MyVoca
- textfield
- Kotlin
- Codeforces
- 쿠링
- pandas
- livedata
- NGINX
- 코루틴
- ProGuard
- Coroutines
- TEST
- AWS
- Today
- Total
목록Primary/Android (61)
이동식 저장소
코드랩으로 연습해 보자. 이 글은 아래의 코드랩을 요약하여 작성하였다. Android Paging 기본사항 | Android Developers 이 Codelab에서는 목록을 표시하는 앱에 Paging 라이브러리를 통합합니다. Paging 라이브러리를 사용하면 로컬 저장소에서나 네트워크를 통해 대규모 데이터 세트의 데이터 페이지를 로드하고 표시 developer.android.com 의존성 정의 Paging 라이브러리 의존성을 정의하자. // architecture components implementation("androidx.paging:paging-common-ktx:3.1.0") implementation("androidx.paging:paging-runtime-ktx:3.1.0") Data so..
대량의 데이터를 유저에게 보이는 부분만 조금씩 가져오고 싶을 때 Jetpack Paging 라이브러리를 사용할 수 있다. 아키텍쳐 Paging 라이브러리는 ``DataStore`` → ``Repository`` → ``ViewModel`` → ``UI``로 이어지는 안드로이드 권장 아키텍쳐에서 바로 사용할 수 있다. 이 문단에서는 개념만 소개하고, 아래에서 실제로 구현해 보겠다. Repository layer Repository layer에서는 ``PagingSource``를 정의해야 한다. ``PagingSource``는 하나의 source로부터 데이터를 로드하는 작업을 정의한다. 예를 들어 로컬 DB나 원격 서버에서 데이터를 받아오는 작업을 정의할 수 있다. 데이터를 받아오는 로직이 계층 구조로 되어..
Fragment도 Activity와 유사한 lifecycle을 갖는다. ``Lifecycle.State`` enum에서 모든 상태 값을 확인할 수 있다. ``INITIALIZED`` ``CREATED`` ``STARTED`` ``RESUMED`` ``DESTROYED`` 그런데 fragment의 view는 fragment와 별도의 lifecycle을 갖는다. 뷰가 보이지 않지만 fragment 자체는 살아있을 수 있기 때문이다. View binding을 ``onCreate``가 아닌 ``onCreateView``에서 초기화하는 이유이기도 하다. 최근 본 코드 중에 fragment에서 ``LiveData``를 observe하는 코드가 있었는데, 생명주기를 ``lifecycleOwner``로 설정하니 메모리..
현재 Canary 5 버전인 Giraffe의 신기능을 정리해 보자. UI 대격변 Android Studio에서도 IntelliJ의 새로운 UI를 사용할 수 있다. 오.. 이게 뭐지? VSCode 스타일의 깔끔한 UI이다. Settings - Apperaance & Behavior에서 적용할 수 있다. 자세한 내용은 IntelliJ 공식 문서를 참고하자. 그런데 아직은 버그가 적지 않은 듯하다. Gradle 파일에서 Sync Project 툴바가 뜨지 않는 등 사용하는 데 불편함이 있을 것 같아 나중에 안정화되면 사용해 보자. 더 많은 Compose Animation Preview Compose의 애니메이션 API 중 기존에는 ``updateTransition``과 ``AnimatedVisibility``..
몇몇 클래스는 사용하기 전에 초기화해야 하는 경우가 있다. 예를 들어 로그 라이브러리인 Timber는 앱을 시작한 후 최대한 빨리 초기화해야 한다. ``Application`` 클래스 안에서 초기화할 수도 있지만, startup 라이브러리를 사용하면 앱이 시작될 때 자동으로 초기화할 수 있다. 설치 ``build.gradle`` 파일에 다음 의존성을 추가하자. dependencies { implementation("androidx.startup:startup-runtime:1.1.1") } Startup 라이브러리의 장점 이전에는 클래스를 ``ContentProvider``에서 초기화하는 경우도 있었지만, ``ContentProvider`` 자체가 만들기 비싼 데다가 결정적으로 클래스의 초기화 순서를 지..