일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Compose
- activity
- MiTweet
- 암호학
- Python
- Coroutines
- relay
- ProGuard
- 백준
- AWS
- TEST
- androidStudio
- livedata
- pandas
- boj
- 코드포스
- textfield
- Codeforces
- android
- MyVoca
- architecture
- Hilt
- Coroutine
- GitHub
- 쿠링
- 프로그래머스
- Rxjava
- 코루틴
- Kotlin
- Gradle
- Today
- Total
목록Primary/Android (80)
이동식 저장소

문제 상황온보딩 화면에서 기능 소개 탭을 스크롤할 때 프레임 드랍이 발생하는 문제가 있다.이 글에서는 Macrobenchmark를 활용하여 프레임 성능을 측정하고, 성능 문제를 해결하는 연습을 해 보겠다.Macrobenchmark앱의 성능을 측정하는 행위를 벤치마킹이라고 한다. 정기적으로 벤치마크를 수행하면 앱의 성능 문제를 분석할 수 있고, 업데이트로 인해 앱의 성능이 하락했는지 확인할 수 있다. Android에서는 Macrobenchmark와 Microbenchmark 두 가지의 벤치마킹 라이브러리를 제공한다. Macrobenchmark는 앱 시작 시간이나 UI 상호작용, 애니메이션 등 큼직한 사용자 경험을 측정한다. 실제로 앱을 사용하는 것처럼 앱을 조작하며 측정할 수 있다. Microbenc..
안드로이드 앱에서는 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 ..

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