일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 유튜브
- 코틀린
- dart
- coroutine
- Github
- 웹뷰
- image
- build
- viewpager
- GIT
- 안드로이드 스튜디오
- RecyclerView
- 에러
- ADB
- Gradle
- 레트로핏
- MVVM
- 코루틴
- 안드로이드스튜디오
- studio
- 의존성주입
- Android
- Retrofit
- error
- 깃헙
- Kotlin
- 스튜디오
- 안드로이드
- 안스
- WebView
- Today
- Total
목록전체 글 (163)
코딩하는 일용직 노동자
Flow의 기본 개념 복습Flow는 코틀린에서 비동기 데이터 스트림을 표현하는 방법입니다. 데이터를 순차적으로 발행하고, 여러 종류의 연산을 지원하여 데이터를 변형하거나 필터링할 수 있습니다.Hot Stream vs Cold StreamFlow는 데이터가 생성되고 소비되는 시점에 따라 Hot Stream과 Cold Stream으로 나눌 수 있습니다.Cold Stream소비자가 시작해야 데이터 생성: 소비자가 Flow를 구독(subscribe)해야 비로소 데이터가 생성되고 전달됩니다.각 소비자는 독립적인 스트림: 각 소비자는 독립적인 스트림을 가지므로, 다른 소비자가 어떤 값을 받았는지에 영향을 받지 않습니다.예시: 네트워크 요청 결과, 데이터베이스 쿼리 결과 등주요 특징:지연 실행: 소비자가 구독하기 전..
android:duplicateParentState 에 대해서 알아보겠습니다.android:duplicateParentState는 안드로이드 뷰의 속성으로, 부모 뷰의 상태(state)를 자식 뷰에 복제할지 여부를 결정합니다.주요 기능:부모 뷰의 상태 변경에 따른 자식 뷰의 자동 업데이트: android:duplicateParentState를 true로 설정하면, 부모 뷰의 상태가 변경될 때 (예: pressed, focused, selected 등) 자식 뷰도 자동으로 해당 상태를 반영하여 그려집니다.효율적인 상태 관리: 각 자식 뷰에 대해 개별적으로 상태를 관리하는 대신, 부모 뷰의 상태를 활용하여 자식 뷰의 상태를 일괄적으로 제어할 수 있습니다.사용 예시:버튼 내부의 이미지 뷰: 버튼이 눌렸을 때 ..
프로젝트를 빌드해서 실행한 후 다시 한번 빌드 후 실행할때부터 java.lang.SecurityException: Writable dex file 오류가 발생했습니다.java.lang.SecurityException: Writable dex file '/data/data/com.amazon.styledictionaryexample/code_cache/.overlay/base.apk/classes2.dex' is not allowed. 이럴땐 당황하지 말고 아래처럼 Application onCreate()에 코드를 추가해주면 됩니다.import android.app.Applicationimport java.io.Fileclass App: Application() { override fun onCreat..
안드로이드 기기의 해상도와 dpi 정보를 얻고 수정하고 초기화하는 명령어.기기의 해상도와 dpi 정보를 얻어오는 명령어adb shell wm size // 해상도adb shell wm density // dpi기기 해상도와 dpi값 변경 명령어adb shell wm size 1152x930 // 해상도 변경adb shell wm density 180 // dpi 변경기기 해상도와 dpi값 초기화adb shell wm size resetadb shell wm density reset
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..