일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- viewpager
- 다트
- ADB
- MVVM
- 안드로이드스튜디오
- Retrofit
- Android
- DI
- build
- 의존성주입
- 에러
- coroutine
- Gradle
- 안드로이드
- 안드로이드 스튜디오
- RecyclerView
- image
- 레트로핏
- 안스
- error
- WebView
- Kotlin
- 깃헙
- studio
- 웹뷰
- 스튜디오
- dart
- 코틀린
- Github
- GIT
- Today
- Total
목록전체 글 (158)
코딩하는 일용직 노동자
const는 상수이며 Java 의 static final 과 같은 역할을 합니다.const는 기본자료형(String, Boolean, Double...)만 사용가능합니다.const는 선언은 반드시 파일의 최상단 또는 companion object 내에 있어야 합니다.final은 var와 val 모두 사용가능합니다.final은 클래스나 변수나 함수의 오버라이딩을 허용하지 않는 용도로 사용합니다.오버라이딩을 허용할때는 final 대신 open을 사용합니다.
윈도우 노트북으로 안드로이드 개발을 하는중에 수시로 usb연결이 끊기고 재연결되는 현상이 있었다. usb 디버깅을 허용하시겠습니까? 메세지가 계속 뜨고 안드로이드 스튜디오에서도 기기명이 보이다 안보이다를 반복했다. 수시로 컴파일하고 테스트기기로 확인해야 하는데 연결 상태가 계속 바뀌다 보니 스트레스가 이만저만이 아니었다. 연결상태를 꾸준히 유지하는 방법을 공유한다. 우선 안드로이드 스튜디오를 실행하기 전에 컴퓨터와 안드로이드 기기를 케이블로 연결한 후 터미널에서 아래 명령어를 입력한다. adb start-server 명령이 성공한 후에 안드로이드 스튜디오를 실행하면 연결상태가 꾸준히 유지된다. 만약 이미 기기가 연결되어 있던 상태였다면 아래 명령어로 모든 기기의 연결을 제거한 후 재연결을 시키면 된다. ..
const와 val은 모두 코틀린에서 상수를 선언하는 데 사용되는 키워드이지만, 값 할당 시점과 변경 가능성 측면에서 중요한 차이점을 가지고 있습니다. 1. 값 할당 시점: const: 컴파일 시점에 값 할당 컴파일 과정에서 상수 값이 직접 코드에 삽입됩니다. 런타임에서 값을 변경할 수 없습니다. 상수 선언은 반드시 파일의 최상단 또는 companion object 내에 있어야 합니다. 기본 자료형만 허용됩니다 (예: Int, String, Boolean, Double 등) val: 런타임 시점에 값 할당 변수 선언 시점에 값을 할당하거나, 후에 할당해야 합니다. 런타임에서 값을 변경할 수 없습니다. 상수 선언 위치에 제약이 없습니다. 모든 자료형 허용됩니다 (예: 객체, 함수, 배열 등) 2. 변경 가..
LiveData는 안드로이드에서 UI 스레드에서 데이터 변경 사항을 관찰하는 데 사용되는 유용한 클래스입니다. value와 postValue는 모두 LiveData의 값을 변경하는 데 사용되는 메서드이지만, 작동 방식과 스레드 처리 측면에서 중요한 차이점이 있습니다. 1. value 사용: 메인 스레드에서 직접 호출: value는 메인 스레드에서 직접 호출되어 LiveData 값을 변경합니다. 즉각적인 값 반영: value 변경은 즉시 UI 관찰자에게 전달됩니다. 스레드 안전성 문제: value는 메인 스레드에서만 호출해야 하며, 백그라운드 스레드에서 호출하면 예외가 발생할 수 있습니다. 코드 간결성: 간단한 값 변경 작업에는 value 사용이 더 간결하고 명확합니다. 2. postValue 사용: 백그..
잘 사용하던 GitKraken 에서 github repository pull/push 를 하려고 하니 난데없이 에러가 발생했다. 우선 GitHub 에서 Developer settings > Personal access tokens > Tokens(classic) 에서 토큰을 확인해보니 만료일이 없는 토큰이었다. 하아... 구글링을 해보니 Generate new token 으로 새로운 토큰을 만들어서 등록하라는 방법도 있긴 했지만.. 이미 기간한정이 없는 토큰이 있으니 이것을 확인해보았다. 대충 필요해보이는 권한을 체크를 한 후 Update token 을 눌렀다. GitKraken 에서 Preferences > Integrations > GitHub 를 선택한 후 Disconnect 를 누른 후 다시 Co..
1. 프로젝트의 보기방식을 모든 파일이 다 보이는 Project로 변경하면 .idea 폴더가 보입니다. 만약 보이지 않는다면 탐색기나 파인더를 이용해도 됩니다. 해당 폴더 아래에 libraries 폴더가 있고 그 안을 보면 dependency 관련 xml 파일이 잔뜩 있습니다. 해당 파일을 모조리 삭제해줍니다. 2. android studio 에서 메뉴 -> File -> Invalidate Cache / Restart.. 를 선택하고, android studio 를 다시 실행합니다. 3. android studio 가 다시 실행되면 메뉴 -> Build -> Rebuild project 를 눌러서 프로젝트를 다시 빌드합니다. 요렇게 실행하면 import 에 cannot resolve 오류가 발생하지 않..
Compose에서 LaunchedEffect, DisposableEffect, SideEffect 비교를 구글 Gemini에게 물어본 결과. LaunchedEffect: - 특정 조건이 충족될 때 코드 블록을 실행하는 함수입니다. - 컴포즈 라이프 사이클 이벤트와 독립적으로 실행됩니다. - 사이드 이펙트를 수행하는 데 유용합니다. - 코루틴을 사용하여 비동기 작업을 수행할 수 있습니다. - key를 사용하여 여러 LaunchedEffect를 구분할 수 있습니다. DisposableEffect: - 컴포즈 함수가 처음 실행될 때 실행되는 코드 블록입니다. - 컴포즈 함수가 제거될 때 자동으로 종료됩니다. - 리소스를 해제하는 데 유용합니다. - 간단한 작업에 적합합니다. - 코루틴을 사용할 수 없습니다. ..
안드로이드 코루틴에서 launchWhenStarted, launchWhenCreated, launchWhenResumed는 액티비티 또는 프래그먼트의 라이프 사이클에 따라 코루틴을 실행하는 함수입니다. 각 함수의 작동 방식: launchWhenStarted: 액티비티 또는 프래그먼트가 시작되면 코루틴을 실행합니다. 액티비티 또는 프래그먼트가 일시 중지되거나 중지된 후 다시 시작되면 코루틴은 다시 시작되지 않습니다. launchWhenCreated: 액티비티 또는 프래그먼트가 생성되면 코루틴을 실행합니다. 액티비티 또는 프래그먼트가 일시 중지되거나 중지된 후 다시 시작되면 코루틴은 다시 시작되지 않습니다. launchWhenResumed: 액티비티 또는 프래그먼트가 다시 시작될 때 코루틴을 실행합니다. 액..
StateFlow 와 SharedFlow 의 차이점에 대해 알아보겠습니다. StateFlow는 상태(State)를 표현하기 때문에 초기값이 필요하고 하나의 값만 업데이트할 수 있습니다. StateFlow는 .value에 상태값을 넣어서 업데이트를 합니다. SharedFlow는 초기값이 없습니다. SharedFlow는 emit() 으로 이벤트를 전달합니다. StateFlow 와 SharedFlow를 테스트해보기 위해 MainViewModel을 만들고 아래처럼 테스트코드를 구성했습니다. import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import kotlinx.coroutines.delay import kotlinx.c..
callbackFlow는 콜백 함수를 사용하여 데이터 스트림을 생성하는 코루틴 플로우 함수입니다. 비동기 작업을 수행하고 데이터를 스트림 방식으로 제공하는 경우에 유용합니다. 작동 방식: callbackFlow 함수는 콜백 함수를 인수로 받습니다. 콜백 함수는 데이터가 사용 가능할 때마다 offer 함수를 호출하여 데이터를 제공합니다. callbackFlow 함수는 데이터 스트림을 생성하고 반환합니다. 구독자는 collect 함수를 사용하여 데이터 스트림을 수집합니다. 장점: 비동기 작업을 쉽게 코루틴 플로우와 함께 사용할 수 있습니다. 데이터 스트림을 백프레셔 방식으로 제공하여 메모리 누수를 방지할 수 있습니다. 콜백 함수를 통해 데이터 스트림을 유연하게 제어할 수 있습니다. 단점: callbackFl..