일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- GitHub
- Coroutines
- Hilt
- Python
- androidStudio
- 암호학
- boj
- 코루틴
- livedata
- Rxjava
- TEST
- relay
- Kotlin
- 코드포스
- Codeforces
- pandas
- architecture
- activity
- 백준
- 프로그래머스
- MiTweet
- 쿠링
- android
- MyVoca
- AWS
- Compose
- textfield
- ProGuard
- Coroutine
- Gradle
- Today
- Total
목록전체 글 (379)
이동식 저장소
모든 안드로이드 앱은 개별 리눅스 프로세스에서 실행된다. 앱이 실행되는 프로세스는 시스템에 의해 회수되기 전까지 계속 실행된다. 즉 프로세스의 생명주기를 앱이 아닌 시스템이 제어한다는 것. 프로세스 생명주기는 앱의 실행 여부, 사용자에게의 중요도, 메모리 상황 등 시스템의 많은 부분을 종합적으로 고려하여 결정된다. 따라서 우리 개발자들은 ``Activity``, ``Service``, ``BroadcastReceiver`` 등의 컴포넌트가 프로세스 생명주기에 어떻게 영향을 미치는 지 알아야 한다. 컴포넌트를 정확히 이해하지 못하면 중요한 로직이 실행되지 않을 수도 있고, 로직이 실행되는 도중에 프로세스가 종료될 수도 있다. 예를 들어 ``BroadcastReceiver``에서 ``Intent``를 받은..
Back navigation은 사용자가 이전에 봤던 화면으로 돌아가는 방법을 말한다. 안드로이드는 사용자가 지금까지 봤던 화면들을 back stack으로 관리한다. Back stack에 저장된 각 항목은 destination이라고 부른다. 스택의 LIFO 특성을 활용하면 가장 최근에 봤던 화면부터 하나씩 다시 볼 수 있다. 일반적인 경우에는 스택에서 pop하는 기본 로직만으로 충분하지만, 가끔 커스텀 로직이 필요할 때가 있다. 예를 들어 ``WebView``를 보여줄 때에는 뒤로 가기를 눌렀을 때 이전 웹 페이지로 돌아가는 커스텀 로직이 필요하다. Android 13 이상에서는 predictive back 제스쳐가 존재한다. Predictive back 내용은 나중에 따로 알아보자.커스텀 back ..
Task는 사용자가 뭔가를 하기 위해 상호작용하는 activity의 모음이다. 새로 생성되는 activity는 back stack이라고 불리는 스택에 삽입된다. 예를 들어, 이메일 앱을 켜면 메일 리스트 activity가 보일 수 있다. 사용자가 어떤 메일을 선택하면, 메일의 자세한 정보를 보여주는 activity가 만들어지고, back stack에 추가된다. 사용자가 뒤로 가기 버튼을 터치하면 메일 상세 정보 activity가 종료되고, back stack에서 pop된다.Task의 생명주기와 back stack대부분의 task는 기기의 홈 화면에서 시작된다. 사용자가 앱 아이콘을 터치하면 그 앱의 task가 포그라운드에 배치된다. 앱의 task가 없었다면, 새 task가 만들어지고 앱의 main ac..
문제 상황온보딩 화면에서 기능 소개 탭을 스크롤할 때 프레임 드랍이 발생하는 문제가 있다.이 글에서는 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`` 인..