Android

· Android
Serial 통신 (시리얼 통신, 직렬 통신) 임베디드 시스템은 각종 프로세서와 회로들 간 통신하며 동작합니다. 이에 따라, 데이터를 주고 받는 표준 프로토콜이 필요합니다. 프로토콜에는 크게 두 종류가 있습니다. Parallel (병렬) / Serial (직렬) Parallel 다수의 비트를 한 번에 전송하는 방법 - 보통 8, 16 혹은 그 이상의 라인을 통해 동시에 데이터를 전송 - 타이밍에 맞춰 모든 라인이 같이 동작할 수 있도록 CLK(clock) 라인이 필요하므로 8-bit data bus의 경우 9라인이 필요합니다. Serial 데이터를 스트림으로 바꾸는 직렬화 과정을 거쳐서 한 번에 한 비트씩 전송하는 방법 - CLK 라인 포함 2라인으로 데이터를 전송 Parallel vs Serial Pa..
· Android
코루틴 비동기 경량 스레드 - "Co: 함께" + "routine: 작업 처리단위" = "Coroutine: 어떤 작업을 함께 처리한다." - 예전에는 ANR 오류를 해결하기 위해 스레드-핸들러나 AsyncTask를 이용했음. 하지만 API 30에서 deprecated되었고 코루틴 이용을 권장하고 있음 - 일반적인 스레드는 자유로운 제어가 힘들고 구현도 복잡하지만, 코루틴은 가볍고 많은 기능을 제공함 CoroutineContext 코루틴 처리를 어떻게 할 것인지에 대한 요소들의 집합 - Dispatcher : 코루틴을 처리할 스레드를 셋팅하고 할당하는 역할 - Job : 생성된 코루틴을 컨트롤 (생명 주기, 부모 자식 관계 정리 및 관리) Coroutine Dispatcher - 코루틴을 스레드에 배분하..
· Android
DataStore - Android Jetpack 라이브러리 중 하나 - 프로토콜 버퍼를 사용하여 키-값 쌍 혹은 유형이 지정된 객체를 저장할 수 있는 데이터 저장소 솔루션 - 코루틴 및 Flow를 사용하여 비동기적이고 일관된 트랜잭션 방식으로 데이터를 저장하는 것이 특징 SharedPreferences vs DataStore DataStore 특징 - 비동기적으로 작동 (코루틴과 Flow를 통해 읽고 쓰기에 대한 비동기 API 제공) - UI 스레드를 호출해도 안전 (Dispathers.IO 밑에서 작동) - Runtime Exceptions로부터 안전 - SharedPreferences 데이터와의 병합 기능 - 일관성이 보장되는 트랜잭션 API를 제공 DataStore 종류 1) Preferences..
· Android
옥수환 - Hilt와 함께 하는 안드로이드 의존성 주입을 보고 작성했습니다. 의존성 주입 생성자 또는 메서드 등을 통해 외부로부터 생성된 객체를 전달받는 것 의존성 주입의 특징 - 클래스 간 결합도를 느슨하게 함 - 인터페이스 기반으로 설계, 코드를 유연하게 함 - Stub 또는 Mock 객체를 사용하여 단위테스트를 하기가 더욱 쉬워짐 안드로이드에서 의존성 주입 어려운 이유? - Android 클래스가 Framework에 의해 인스턴스화 됨 ( -> 클래스들 내부에 개발자가 직접 생성자를 만들거나 생성자의 매개변수를 전달할 수 있는 방법이 없음) 의존성 주입 프레임워크의 궁극적인 목표 - 정확한 사용방법을 제안 - 쉬운 설정 방법 - 중요한 것들에 집중할 수 있도록 함 Hilt 애플리케이션에서 DI를 사..
· Android
조건문 when문 다른 언어에서의 switch문과 동일 파라미터 값 : 기본 타입, 문자열 리터럴, 변수, 연산식 조건식 : 기본 타입, 문자열 리터럴, 변수, 연산식, 범위 val value: Int = 3 val value2: Int = 10 when (value) { 1 -> println()// 기본 리터럴 2/1 -> println()// 연산식 value2 -> println()// 변수 3, 5 -> println()// 콤마로 구분해서 사용 in 5..7 -> println()// 범위 값 !in 8..9 -> println() null -> println() else -> println() } 파라미터 없이 사용 val value: Int = 4 when { value == null ->..
· Android
코틀린의 Null Safety 코틀린은 자바에서 흔히 볼 수 있는 NullPointerException 오류를 피할 수 있게 돕는 널 가능성이라는 타입 시스템 특성이 존재함 - 타입 시스템에 널이 될 수 있는지 여부를 추가함으로써 컴파일러가 여러가지 오류를 컴파일 시 미리 감지해서 실행 시점에 발생할 수 있는 예외의 가능성을 줄임 Null값 허용하기 : ? 1. 변수에 null 허용 설정 - null 허용을 위해 변수 선언시 타입 뒤에 ?(nullable)를 붙여야 함 class Nullable { var nullable: String? = null } 2. 함수 파라미터에 null 허용 설정 - 함수 파라미터가 null을 허용하려면 해당 파라미터에 대해 null 체크를 먼저 해야 사용 가능. 즉, if..
· Android
코틀린 변수 선언 선언할 데이터의 값이 변경되지 않을 경우 val, 변경될 수 있을 경우 var로 선언 상수는 const로 선언 // 변수 선언 시 초기화 -> 타입 생략 O (타입 추론 가능) var name = "림" val age = 24 // 초기화 없이 변수 선언만 -> 타입 생략 X var name:String val age:Int // 상수 const val PI = 3.141592 val과 const val의 차이 val : 불완전한 불변성 - 값이 런타임 시에 결정되는 상수 - 독립적인 프로그램 수행 중 프로그램 수행에 따라 값이 바뀔 수 있음 - 두 숫자를 더한 값을 반환하는 함수를 사용해 val의 값을 정할 때, 파라미터에 따라 값이 다르게 나타날 수 있음 const val : 불변성..
· Android
Activity란? 더보기 - 안드로이드 앱의 4가지 구성 요소(Activity, Service, Broadcast Receiver, Content Provider) 중 하나 - 사용자 인터페이스(UI)를 포함한 화면 하나를 나타냄 - 대부분의 앱은 여러 Activity로 이루어져 있음 - 안드로이드 시스템과 안드로이드 앱의 주요 상호작용을 도움 - main() 메소드를 호출하여 프로그램을 실행하는 프로그래밍 패러다임과 달리, 수명 주기의 특정 단계에 해당하는 특정 콜백 메소드를 호출하여 Activity 인스턴스의 코드를 시작 - 모바일 앱 환경은 사용자와 앱의 상호작용이 항상 동일한 위치에서 시작되는 것은 아님 => 사용자와 앱의 상호작용에 따라 앱이 시작되는 Activity가 다를 수 있고, Acti..
YOONJELLY
'Android' 카테고리의 글 목록