일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- livedata
- ProGuard
- androidStudio
- 백준
- architecture
- Kotlin
- boj
- MyVoca
- Coroutine
- 코루틴
- 쿠링
- Hilt
- Rxjava
- activity
- AWS
- Coroutines
- 코드포스
- TEST
- relay
- GitHub
- Python
- 암호학
- Gradle
- textfield
- 프로그래머스
- pandas
- android
- Codeforces
- Compose
- MiTweet
- Today
- Total
목록전체 글 (380)
이동식 저장소
안드로이드 앱에서는 UI = activity라고 봐도 될 정도로 activity의 비중이 크다. 그래서 activity가 실제 기기에서 어떻게 동작하는지 잘 테스트해야 한다.전화가 왔을 때처럼 다른 앱이 activity를 interrupt할 때시스템이 activity를 destroy하고 다시 만들 때사용자가 activity를 PIP나 멀티 윈도우에서 사용할 때등의 다양한 경우에서 activity가 생명주기 이벤트에 잘 대응하는지 확인해야 한다.Activity state 설정Activity를 테스트할 때에는 activity의 state를 설정하는 것이 중요하다. 테스트의 given-when-then 패턴에서 "given" 부분은 AndroidX Test 라이브러리의 ``ActivityScenario`` 인..
사용자 이벤트나 시스템 이벤트에 의해 ``Activity``의 state가 바뀔 수 있다. 이번 글에서는 state가 바뀌는 대표적인 상황을 알아보고, state 변화에 대응하는 방법을 공부해 보자.Configuration changeConfiguration change를 일으키는 이벤트는 매우 많다. 대표적으로 화면 방향을 바꾸는 경우가 있고, 그 외에 언어나 입력 장치를 바꾸는 경우가 있다. Configuration change가 발생하면 activity는 destroy된 후 다시 만들어진다. Destroy 과정에서는 다음 콜백이 실행된다.``onPause()````onStop()````onDestroy()``새 activity 인스턴스가 만들어질 때에는 다음 콜백이 실행된다.``onCreate()`..
Failed to upload application(s): failed to upload app bundle, error: googleapi: Error 403: You cannot upload a test-only APK or Android App Bundle., forbidden여러 원인이 있을 수 있지만, 나는 ``compileSdkPreview`` 버전을 현재 프리뷰 상태인 ``VanillaIceCream``(Android 15 프리뷰)로 설정해서 오류가 발생했다. Google Play는 프리뷰 버전으로 compile한 앱을 거부한다. ``compileSdkPreview = "VanillaIceCream`` 대신 ``compileSdk = 34``를 사용하고, ``VanillaIceCream`` ..

Compose API 중 ``derivedStateOf``라는 API가 있다. 이름만 보면 state로부터 다른 state를 만드는 함수인 것처럼 보인다. 왜냐면 공식 문서에도 그렇게 적혀있기 때문이다.derivedStateOf: convert one or multiple state objects into another state실제 의미그러나 실제로는 output을 줄이는 최적화 API에 가깝다. Android developers 아티클의 예시를 통해 이해해 보자. 다음과 같은 로그인 UI가 있다. 서비스 정책적으로 username은 알파벳으로만 이루어질 수 있다고 하자. ``username``을 입력할 때 ``submitEnabled``의 변화는 다음과 같다.여기까진 문제가 없다. 그런데 ``user..

사용자가 앱을 사용하는 동안 activity는 생명주기의 여러 단계를 지난다. Activity에는 생명주기가 바뀔 때마다 실행되는 콜백이 정의되어 있어, 생명주기별로 실행할 작업을 정의할 수 있다. 생명주기 콜백 함수에서는 사용자가 activity에서 들어올 때와 나갈 때 실행할 코드를 작성할 수 있다. 예를 들어 비디오 스트리밍 앱을 만들고 있다면, 사용자가 다른 앱으로 이동했을 때에는 비디오 재생을 중지할 수 있다. 사용자가 앱으로 돌아오면 다시 재생을 시작할 수 있다. 생명주기에 맞는 작업을 실행하면 더 빠르고 견고한 앱을 만들 수 있다. 대략 아래와 같은 경우를 방지할 수 있다.사용자가 전화를 받거나 다른 앱으로 이동할 때 앱이 crash되는 경우사용자가 앱을 사용하고 있지 않을 때 시스템 자원을..