일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- rxjava disposable
- 안드로이드 유닛 테스트 예시
- android retrofit login
- 안드로이드 유닛 테스트
- 스택 큐 차이
- 서비스 쓰레드 차이
- Rxjava Observable
- ANR이란
- 자바 다형성
- 안드로이드 라이선스
- 플러터 설치 2022
- 안드로이드 os 구조
- 서비스 vs 쓰레드
- jvm이란
- 2022 플러터 안드로이드 스튜디오
- rxjava cold observable
- 멤버변수
- 안드로이드 유닛테스트란
- 큐 자바 코드
- 안드로이드 라이선스 종류
- ar vr 차이
- 스택 자바 코드
- 객체
- android ar 개발
- 안드로이드 레트로핏 crud
- rxjava hot observable
- 2022 플러터 설치
- 안드로이드 레트로핏 사용법
- jvm 작동 원리
- 클래스
- Today
- Total
목록2024/03 (16)
나만을 위한 블로그
이 글은 내가 개발자로서 기본기나 능력이 탄탄하다고 생각해서 쓰는 게 아니다. 나 자신도 항상 많이 부족하다고 생각되서 더 잘 하는 개발자가 되고 싶은데, 매번 찾아보긴 귀찮아서 써 두고 필요할 때마다 보려고 적는다. 주기적으로 찾아보고 업데이트할 예정이다. https://goldenrabbit.co.kr/2022/01/05/%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%A1%9C-%EA%B1%B0%EB%93%AD%EB%82%98%EA%B8%B0%E2%8B%AF-%EB%84%A4-%EA%B0%80%EC%A7%80-%EA%B8%B0%EB%B3%B8-%EC%86%8C%EC%96%91%EC%9D%84-%EA%B8%B0%EC%96%B5%ED%95%98%EC%84%B8/ 개발자로 거듭나기⋯ 네 가지 기본..
코루틴의 중요 기능은 코루틴이 실행돼야(시작, 재개 등) 할 쓰레드(또는 쓰레드 풀)를 결정할 수 있는 것이다. 디스패처로 이 기능을 쓸 수 있다. 코루틴이 어떤 쓰레드에서 실행될지 정하는 건 CoroutineContext다. 기본 디스패처 디스패처를 설정하지 않으면 기본 설정되는 디스패처는 CPU 집약적 연산을 수행하게 설계된 Dispatchers.Default다. 이 디스패처는 코드가 실행되는 컴퓨터의 CPU 개수와 같은 수(최소 2개 이상)의 쓰레드 풀을 갖고 있다. 쓰레드를 효율적으로 쓴다고 가정하면 이론적으로 최적의 쓰레드 개수라고 할 수 있다. 기본 디스패처 제한하기 고비용 작업이 Dispatchers.Default의 쓰레드를 다 써서 같은 디스패처를 쓰는 다른 코루틴이 실행될 기회를 제한하고..

안드로이드의 테스트는 크게 비즈니스 로직을 검증하는 단위 테스트, 안드로이드 API를 같이 사용해 UI와의 상호작용도 같이 검증하는 계측(Instrumented) 테스트의 2가지로 나뉘어진다. 이 글을 찾아온 사람이라면 이미 아는 내용이라 생각되지만, 안드로이드 기준으로 두 테스트의 차이를 간략하게 적으면 아래와 같다. 단위 테스트 : 순수 자바 / 코틀린으로 구성된 함수, 클래스 등을 테스트함. JUnit, Kotest, hamcrest 등을 써서 구성할 수 있음 계측 테스트 : 에뮬레이터, 실기기에서 작동하는 테스트. 네이티브 UI 테스트는 espresso, 웹뷰의 UI 테스트는 espresso-web을 써서 테스트 작성. 필요 시 JUnit의 일부 기능을 같이 쓸 수 있음 안드로이드의 비즈니스 로직..
여러 엔드포인트에서 데이터를 동시에 얻어야 하는 중단 함수를 구현할 때 차선책은 뭐가 있을까? 코루틴 스코프 함수 전에 쓰인 방법들 첫 번째 방법은 중단 함수에서 중단 함수를 호출하는 것이다. 문제는 작업이 동시에 진행되지 않는다는 것이다. 하나의 엔드포인트에서 데이터를 얻는데 1초 걸려서 함수가 끝나려면 2초가 걸린다. 두 중단 함수를 동시 실행하려면 각각 async로 래핑해야 한다. 하지만 async는 스코프가 필요하고 GlobalScope 사용은 좋은 방법이 아니다. GlobalScope에서 async를 호출하면 아래 결과가 발생한다. 메모리 누수가 발생할 수 있고 쓸데없이 CPU를 낭비함 코루틴을 단위 테스트하는 도구가 작동하지 않아서 함수 테스트가 어려움 따라서 위 방법 대신 스코프를 인자로 넘..
잡히지 않은 예외가 발생하면 앱이 종료되듯 코루틴도 종료된다. 쓰레드도 종료되지만 차이가 있다면 코루틴 빌더는 부모도 종료시키고 취소된 부모는 모든 자식을 취소시킨다는 것이다. 아래 예에선 예외를 받았을 때 자신을 취소하고 launch가 예외를 부모로 전파한다. import kotlinx.coroutines.delay import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking fun main(): Unit = runBlocking { launch { delay(1000) throw Error("에러 발생") } launch { delay(2000) println("여기는 출력되지 않음") } launch { delay(500) // 예외..

※ 이 글의 코드들은 모두 예시기 때문에 실제로 사용하려면 반드시 리팩토링 후 사용한다 안드로이드 14에서 미디어 접근 권한이 또 변경됐다. 작작 바뀌어라 진짜 어쩔 수 없다. 안드로이드 14에 맞춰 대응하려면 다시 공식문서 뒤적거리면서 뭔 소린지 애써 이해하고, 예시 코드 직접 써 보면서 고통받는 길밖에는 없다. 안드로이드 14의 변경점 중 특기할 만한 것으로는 제목에도 썼듯이 사진, 영상 파일에 대한 일부 접근 권한 부여다. https://developer.android.com/about/versions/14/changes/partial-photo-video-access?hl=ko 사진 및 동영상에 대한 일부 액세스 권한 부여 | Android Developers The Android 15 Devel..