일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 멤버변수
- 서비스 쓰레드 차이
- 2022 플러터 설치
- 안드로이드 유닛 테스트
- 안드로이드 라이선스
- 자바 다형성
- android retrofit login
- android ar 개발
- 객체
- 2022 플러터 안드로이드 스튜디오
- ar vr 차이
- rxjava hot observable
- 안드로이드 레트로핏 사용법
- 안드로이드 유닛테스트란
- 스택 자바 코드
- rxjava cold observable
- 플러터 설치 2022
- jvm이란
- 클래스
- 큐 자바 코드
- 안드로이드 os 구조
- jvm 작동 원리
- Rxjava Observable
- 서비스 vs 쓰레드
- ANR이란
- 안드로이드 유닛 테스트 예시
- 안드로이드 라이선스 종류
- 안드로이드 레트로핏 crud
- 스택 큐 차이
- rxjava disposable
- Today
- Total
목록Android (402)
나만을 위한 블로그
단위 테스트를 작성하다 보면 목과 스텁, 페이크, 스파이 중 뭘 선택해서 작성해야 할지 고민될 수 있다.결론부터 보면 테스트의 목적에 따라 뭘 사용할지 달라진다고 할 수 있다. 뭘 목적으로 하는 테스트인가? 먼저 4가지의 정의를 간단하게 각각 정리하면 아래와 같다. 스텁 : 미리 정의된 고정값을 리턴하는 객체. 정의된 값을 리턴하는 것 외에 다른 로직은 포함하지 않음목 : 객체 행동을 시뮬레이션할 때 사용. 행동 기반 검증(몇 번 호출됐는지, 무슨 매개변수로 호출됐는지 등)을 위해 사용페이크 : 실제 시스템과 유사하게 작동하는 가짜 객체. 로직이 포함돼 있어서 스텁과 다른 구현체스파이 : 실제 객체를 감시하며 실제 메서드를 호출하지만 호출 내용을 기록하거나 일부 메서드 동작을 변경할 수 있음 스텁을 사용..

이 포스팅에선 컴포즈에서 마진을 설정하는 방법들을 정리한다. 앱을 만들면 필수적으로 마진, 패딩을 입혀야 하는 경우가 있는데 패딩은 Modifier의 padding()을 사용하면 되지만 마진은 다양한 방법들이 있어서 정리하려고 한다. Modifier.padding() 정확히는 요소 주변에 공간을 추가해서 마진처럼 보이게 하는 방법이다. 내부 컴포넌트와 부모 레이아웃 사이에 공간을 추가한다. @Composablefun Test() { Scaffold( modifier = Modifier.fillMaxSize(), ) { innerPadding -> Column( modifier = Modifier .padding(innerP..

바텀 시트를 만들던 도중 아래처럼 바텀 시트의 내용물들이 시스템 네비게이션 바와 겹쳐서 표시되는 현상이 일어났다. 원인은 간단했다. TextField에서 키보드를 띄우기 위해 키보드 inset을 고려해서 아래처럼 코드를 짰었다. ModalBottomSheet( // ... windowInsets = WindowInsets.ime,) 이렇게 하고 앱을 실행하면 위의 사진처럼 시스템 네비게이션 바와 바텀 시트 안의 내용물이 겹쳐서 표시될 수 있다.해결하려면 아래처럼 수정하면 된다. 바텀 시트 안에서 Column을 사용하기 때문에 아래처럼 수정했음을 참고한다. ModalBottomSheet( // ... windowInsets = WindowInsets.systemBars.only(Wi..
아래는 경쟁 상태를 설명하는 영문 위키백과다. https://en.wikipedia.org/wiki/Race_condition Race condition - WikipediaFrom Wikipedia, the free encyclopedia When a system's behavior depends on timing of uncontrollable events Race condition in a logic circuit. Here, ∆t1 and ∆t2 represent the propagation delays of the logic elements. When the input value A changes from len.wikipedia.org경쟁 조건은 시스템의 실질적인 동작이 제어할 수 없는 다른 ..

이 글은 아래의 미디엄 링크를 번역한 포스팅이다. 2편은 추후 번역한다. https://medium.com/proandroiddev/loading-initial-data-in-launchedeffect-vs-viewmodel-f1747c20ce62 Loading Initial Data in LaunchedEffect vs. ViewModelWhen initializing or fetching data upon entering a screen, it’s crucial to select the right trigger point for loading the initial data…proandroiddev.com 화면에 들어갔을 때 데이터를 초기화하거나 가져올 경우 초기 데이터를 불러오기 위한 올바른 트리거 ..

가끔 이런 에러가 뜨면서 코드 내에서 BuildConfig을 사용할 수 없는 경우가 있다.자동 임포트 설정을 하지 않았거나 그 코드에서만 안 된 거라면 임포트해서 쓰면 되지만, 그렇게 해도 안 될 경우 2가지 방법을 쓸 수 있다. 1. app gradle > buildFeatures에 "buildConfig = true" 추가 먼저 앱 수준 gradle 파일의 buildFeatures 블록 안에 buildConfig = "true"를 추가해서 확인해볼 수 있다. buildFeatures { compose = true buildConfig = true} 컴포즈를 사용 중인 프로젝트라면 compose = true는 기본으로 있을 텐데, 그 밑에 그냥 써주면 된다. 레거시 뷰 프로젝트라면 이 블록이..
이 글은 아래의 미디엄 링크를 번역한 포스팅이다. https://proandroiddev.com/the-best-way-to-load-data-in-viewmodels-a112ced54e07 The best way to load data in ViewModelsSimplicity is key. Sadly, it is also one of the hardest things to achieve in software development. Learn how to easily load data in 2024.proandroiddev.com 아래는 수정할 코드다. sealed interface ViewState { data class Success(val text: String, val counter: Int)..

바텀 네비게이션 바가 아니라 버튼을 눌렀을 때 화면을 이동하는 방법을 확인한다.바텀 네비게이션 바로 화면 이동을 구현한 코드와 같은 코드를 쓰기 때문에 세세한 코드는 이전 포스팅을 참고한다. https://onlyfor-me-blog.tistory.com/764 [Android Compose] 컴포즈 화면 이동 구현하는 법2024.09.10 - 의존성, 코드 수정 Compose를 사용하지 않는다면 인텐트와 startActivity()를 써서 다른 액티비티로 이동할 수 있었다.하지만 Compose에선 startActivity() 대신 네비게이션 라이브러리를 써서 화onlyfor-me-blog.tistory.com 아래는 전체 예시 코드다. import android.os.Bundleimport androi..

2024.09.10 - 의존성, 코드 수정 Compose를 사용하지 않는다면 인텐트와 startActivity()를 써서 다른 액티비티로 이동할 수 있었다.하지만 Compose에선 startActivity() 대신 네비게이션 라이브러리를 써서 화면 이동을 구현한다. 코드를 보기 전에 왜 Compose에선 이딴이런 식으로 화면 이동을 구현해야 하는 것인가?이 글을 보는 사람이라면 Compose가 선언형 방식으로 UI를 구성한다는 건 알고 있을 것이다. 이 특징 때문에 네비게이션 라이브러리를 사용하는 것이다.안드로이드의 전통적인 화면 전환 방법인 startActivity()는 명령형 프로그래밍 패러다임을 따르는 함수다. 그래서 선언형 프로그래밍 패러다임인 Compose와는 잘 맞지 않는다. 안드로이드 공식문..

XML 뷰에선 간단하게 쓸 수 있던 스낵바가 Compose에선 좀 번거롭다. 아래는 스낵바를 사용하는 예시 컴포저블이다. @Composablefun SnackBarExample() { val snackBarHostState = remember { SnackbarHostState() } val coroutineScope = rememberCoroutineScope() Scaffold( snackbarHost = { SnackbarHost(hostState = snackBarHostState) } ) { innerPadding -> Column( modifier = Modifier .padding(innerPaddi..