일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 클래스
- 안드로이드 라이선스 종류
- ar vr 차이
- 안드로이드 레트로핏 사용법
- rxjava cold observable
- 자바 다형성
- android ar 개발
- rxjava disposable
- 안드로이드 os 구조
- 스택 자바 코드
- 안드로이드 유닛 테스트
- 2022 플러터 설치
- 서비스 vs 쓰레드
- rxjava hot observable
- jvm이란
- ANR이란
- 서비스 쓰레드 차이
- 안드로이드 유닛 테스트 예시
- 안드로이드 라이선스
- 스택 큐 차이
- 안드로이드 레트로핏 crud
- 큐 자바 코드
- 플러터 설치 2022
- Rxjava Observable
- 2022 플러터 안드로이드 스튜디오
- 멤버변수
- android retrofit login
- jvm 작동 원리
- 객체
- 안드로이드 유닛테스트란
- Today
- Total
목록2024/04 (18)
나만을 위한 블로그
원시값을 갖는 플로우 Flow를 만드는 가장 간단한 방법은 플로우가 어떤 값을 가져야 할지 정의하는 flowOf()를 쓰는 것이다. listOf()와 비슷하다. import kotlinx.coroutines.flow.flowOf suspend fun main() { flowOf(1, 2, 3, 4, 5) .collect { println(it) } } // 1 // 2 // 3 // 4 // 5 값이 없는 Flow가 필요하면 emptyFlow()를 쓰면 된다. emptyList()와 비슷하다. import kotlinx.coroutines.flow.emptyFlow suspend fun main() { emptyFlow() .collect { println(it) } } // 아무것도 출력되지 않음 컨버..

이 에러가 표시되더라도 VS code나 에뮬레이터에서 작동하는 데는 문제가 없다. 그러나 노란색으로 상단에 계속 표시되기 때문에 거슬려서 해결 방법을 찾아봤다. 내 경우 File > Project Structure > modules 클릭 > 빨간 줄이 표시되는 폴더 클릭 > module sdk가 Android 29로 설정된 걸 33으로 바꾸니 해결됐다. 이 방법 전에는 Settings > Language & Frameworks > Android SDK 클릭 후 29가 설치되어 있지 않았어서 설치했고, 그래도 계속 경고가 표시되서 위 방법대로 하니 해결됐다. 참고한 사이트) https://stackoverflow.com/questions/76982304/android-sdk-android-api-29-pl..
Flow는 비동기적으로 계산해야 할 값의 스트림을 나타낸다. Flow 인터페이스 자체는 떠다니는 원소들을 모으고 Flow의 끝에 도달할 때까지 각 값을 처리한다. Flow의 collect는 컬렉션의 forEach와 비슷하다. 이 함수는 Flow의 유일한 멤버 함수고 다른 함수들은 확장 함수로 정의돼 있다. iterator만 멤버 함수로 가진 Iterable 또는 Sequence와 비슷하다. 플로우와 값들을 나타내는 다른 방법들 비교 Flow 개념은 RxJava, Reactor를 쓴다면 잘 알겠지만 그 외의 사람들에겐 아니다. 여러 값을 리턴하는 함수가 필요하다고 가정한다. 한 번에 모든 값을 만들 때는 List, Set 같은 컬렉션을 쓴다. fun allUsers(): List = api.getAllUs..
record는 Dart 3.0에서 등장했고, 익명이고 불변인 집계(aggregate) 타입이다. 이걸 쓰면 여러 객체를 하나의 객체로 묶을 수 있다. 특징만 보면 컬렉션이 떠오르지만 Dart 공식문서를 보면 레코드와 컬렉션은 별도의 문서로 구분되어 있어서 서로 다른 개념이다. 어떤 것인지 공식문서를 확인해 본다. https://dart.dev/language/records Records Summary of the record data structure in Dart. dart.dev 레코드는 익명의 불변 집계 유형이다. 다른 컬렉션 타입과 마찬가지로 여러 객체를 하나의 객체로 묶을 수 있다. 다른 컬렉션 타입과 달리 레코드는 크기가 고정돼 있고 이질적이며 타입이 지정돼 있다. 레코드는 실제 값이므로 변수..
채널은 값을 핫 스트림으로 갖지만 콜드 스트림이 필요할 때가 있다. 우리가 쓰는 대부분의 소스는 2종류로 구분할 수 있어서 핫 / 콜드 스트림 데이터 차이를 이해하는 게 소프트웨어 측면에서 유용하다. List, Set 등의 컬렉션은 핫이고 Sequence, 자바 스트림은 콜드다. 채널은 핫이지만 Flow, Observable, Single 같은 RxJava 스트림은 콜드다. 핫 vs 콜드 핫 데이터 스트림은 열정적이라 데이터 소비와 무관하게 원소를 생성하지만 콜드 데이터 스트림은 게을러서 요청이 있을 때만 작업하고 아무것도 하지 않는다. 핫인 리스트, 콜드인 시퀀스를 쓸 때 그 차이가 나온다. 핫 데이터 스트림의 빌더와 연산은 즉시 실행된다. 콜드 데이터 스트림에선 원소가 필요할 때까지 실행되지 않는다...

Compose에서 말하는 상태는 아래와 같다. https://developer.android.com/develop/ui/compose/state?hl=ko 상태 및 Jetpack Compose | Android Developers 이 페이지는 Cloud Translation API를 통해 번역되었습니다. 상태 및 Jetpack Compose 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 앱의 상태는 시간이 지남에 따라 developer.android.com 앱의 상태는 시간이 지남에 따라 변할 수 있는 값이다. Room DB부터 클래스 변수까지 모든 항목이 포함된다. 모든 안드로이드 앱에선 유저에게 상태가 표시된다. 아래는 상태의 몇 가지 예다. - 네트워크 연결을 설정할..
코루틴은 가장 먼저 완료되는 코루틴의 결과를 기다리는 select 함수를 제공한다. 또한 여러 채널 중 버퍼에 남은 공간이 있는 채널을 먼저 확인해서 데이터를 보내거나 이용 가능한 원소가 있는 채널로부터 데이터를 받을 수 있는지 확인할 수 있다. 지연되는 값 선택 여러 소스에 데이터를 요청한 뒤 가장 빠른 응답만 얻는 경우를 생각한다. 가장 쉬운 방법은 요청을 여러 비동기 프로세스로 시작하고 select 함수를 표현식으로 사용하고, 표현식 안에서 값을 기다리는 것이다. select 안에선 select 표현식에서 나올 수 있는 결과값을 명시하는 Deferred 값의 onAwait()를 호출한다. 람다 안에서 값을 바꿀 수도 있다. 아래 예에서 비동기 결과값 하나만 리턴하는 걸 볼 수 있는데 select 표..
플러터에선 위젯을 써서 UI를 구현한다. 그리고 이 위젯은 Stateful하거나 Stateless하거나 둘 중 하나의 특징을 갖는다. Stateful, Stateless를 확인하려면 위젯이 뭔지 알아야 이해가 좀 더 쉬울 것 같아 위젯부터 확인한다. https://docs.flutter.dev/ui Building user interfaces with Flutter Introduction to user interface development in Flutter. docs.flutter.dev 플러터 위젯은 리액트에서 영감을 얻은 프레임워크를 써서 제작됐다. 핵심 아이디어는 위젯으로 UI를 구축한다는 것이다. 위젯은 현재 구성, 상태에 따라 뷰가 어떤 모습이어야 하는지 설명한다. 위젯 상태가 바뀌면 위젯은..