본문 바로가기

분류 전체보기

(78)
Retrofit Retrofit은 OkHttp 기반의 라이브러리로 OkHttp보다 간편하게 사용할 수 있고, 가독성 높은 구조로 네트워크 통신을 가능하게 해준다. 특징API 인터페이스 : 요청과 응답을 인터페이스로 쉽게 구현할 수 있다.어노테이션 : HTTP Method와 Header 등 다양한 작업을 어노테이션으로 정의할 수 있다.비동기 처리 : Call 객체 및 Coroutine, RxJava와 같이 비동기 처리 가능직렬화/역직렬화 : Converter Factory 등록으로 데이터를 JSON으로 직렬화 및 역직렬화를 손쉽게 변환할 수 있다.OkHttp Interceptor 추가 작업 다른 HTTP 라이브러리에 비해 속도가 빠르다. 1️⃣ Retrofit Builderclass RetrofitManager { ..
OkHttp HTTP 클라이언트 라이브러리로, HTTP 요청, 응답, 캐싱, 커넥션 풀과 같은 저수준 작업을 처리한다. OkHttp는 Android 5.0 (API 21) 이상 및 JAVA 8 이상에서 동작하며, Okio와 Kotlin 표준 라이브러리를 사용한다. 특징HTTP/2의 경우 동일한 호스트에 대한 모든 요청이 동일한 소켓을 공유할 수 있다.Connection Pooling: 요청마다 새로 연결하지 않고 Connection Pool 기능을 이용하여 동일한 URL의 연결을 Pooling하여 재사용한다. (HTTP/2가 아닌 경우)Transparent GZIP: 응답 데이터를 압축하여 네트워크 트래픽을 줄여준다.서버에 압축된 콘텐츠를 허용한다는 Accept-Encoding: gzip 를 헤더에 담아보내면 서버에..
HttpUrlConnection Http 네트워크 통신의 가장 기본이 되는 HttpUrlConnection은 Java에서 제공하는 클래스로, HTTP 통신에 필요한 메서드들을 제공한다. 네트워크 작업할 땐 Retrofit, Okhttp 등을 사용하기 때문에 직접적으로 HttpUrlConnection을 사용할 일은 매우 적겠지만 어떻게 사용하는지 간단하게 알아보자. 1. URL 연결val url = URI(URL).toURL()val httpUrlConnection = url.openConnection() as HttpURLConnectionhttpUrlConnection.apply { connectTimeout = 5000 requestMethod = "GET" doInput = true}URL.openConnectio..
[Kotlin] Scope Function kotlin Scope Function에는 apply, also, with, run, let 총 5가지의 Function이 있다. 자기 자신의 객체를 반환하는 함수1. applyinline fun T.apply(block: T.() -> Unit): Tapply는 객체의 프로퍼티(속성)을 정의할 때 사용한다. val product: Product = Product().apply { // this id = 1 name = "컴퓨터" price = 1000000 category = Category.ELECTRONICS}data class Product( var id: Int = 0, var name: String = "", var price: Int = 0, va..
[안드로이드] Service에서 위치 데이터 지속적으로 얻기 Service를 이용하여 백그라운드에서 실시간 위치 데이터를 지속적으로 얻어오는 방법입니다. 1. 실시간 위치 데이터실시간 위치 데이터는 FusedLocationProviderClient를 이용하여 쉽게 얻을 수 있다.val mFusedLocationClient: FusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(context) 다음과 같이 FusedLocationProviderClient를 초기화하고 이를 통해 위치 데이터를 얻을 수 있다. 마지막 위치val lastLocation: Task = mFusedLocationClient.lastLocation 지속적인 위치mFusedLocationClien..
Notification val builder: NotificationCompat.Builder = NotificationCompat.Builder(applicationContext, CHANNEL_ID)NotificationCompat.Builder 종류1. setSmallIcon (필수)3. setWhen: 재정의3. setShowWhen(Boolean)4. setLargeIcon5. setContentTitle6. setContentText 특정 이벤트addAction: 아이콘 등록 후 아이콘 클릭 시 이벤트setDeleteIntent: 슬라이드로 알림 삭제 시 이벤트setContentIntent: 알림 클릭 시 이벤트 커스텀 Notificationval remoteViews = Re..
Service Activity는 UI 인터페이스를 통해 사용자와 상호작용하는 컴포넌트라면,Service는 백그라운드에서 특정 작업을 수행하는 컴포넌트라 할 수 있다. Service에서는 음악 재생, 다운로드 등의 작업을 수행할 수 있다. Service는 백그라운드 작업을 담당하지만 스레드는 Main Thread를 사용하기 때문에 5초 이상 작업이 지연될 경우 ANR이 발생할 수 있다. 따라서 필요한 경우 적절한 비동기 처리가 필요하다. Service의 Lifecycle Manifest 등록 android:enabled : 인스턴스화 유무 (Service는 true여야 동작)android:exported : 다른 앱에서 접근 가능 유무 (상호작용) Service 시작하기Service에는 대표적으로 onStartCo..
메모리 가상 메모리프로세스는 프로그램을 실행하기 위해 메모리를 사용한다.그러나 사용되는 프로그램이 많고 모든 프로세스가 메모리에서 동작할 수 없기 때문에 효율적으로 사용하기 위해 프로세스는 가상 메모리를 사용한다.가상 메모리는 32bit 기준 프로세스 당 4GB가 할당된다.가상 메모리는 아래와 같은 구조로 구성되어 있다. 리눅스에서는 사진 외에도 커널 영역도 할당되어 있지만 중요한 것은 TEXT 영역과 스택 영역, 힙 영역이다. TEXT 영역 : 프로그램의 코드(명령어)가 저장된 영역PC(Procram Counter): CPU 내부에 있는 레지스터로 다음에 실행될 명령어의 주소를 가지고 있다. 이때 명령어의 주소가 TEXT 영역의 주소를 가리킨다.명령어가 실행될 때 값이 증가한다.STACK 영역 : 프로그램이 ..
TCP Header TCP 헤더 필드Source Port & Destination Port송수신 포트 주소Sequence Number송신 프로세스가 지정하는 순서 번호세그먼트 전송 과정에서 전송되는 바이트의 수를 기준으로 증가TCP에서는 전송 데이터의 각 바이트마다 순서 번호가 존재Acknowledgement Number수신 프로세스가 제대로 수신한 바이트의 수를 읍닫하기 위해 사용ACK 플래그 비트가 지정된 경우에만 유효다음에 수신을 기대하는 데이터의 순서 번호를 표시ACK 응답을 받은 송신 프로세스는 ACK Number-1까지의 모든 데이터가 올바로 전송되었음을 확인할 수 있다.Data OffsetTCP 세그먼트가 시작되는 위치를 기준으로 데이터의 시작 위치를 나타낸다.TCP 헤더의 크기Window슬라이딩 윈도우 프로토..
WorkManager(feat.Hilt) Background Task백그라운드 작업을 선택할 때 위와 같이 조건에 따라 API를 선택할 수 있다.WorkManager특징1. 제약 조건Wifi 상태에서 작업 실행배터리 충전 중일 경우 실행기기가 유휴 상태일 경우…다양한 조건을 설정하여 조건에 맞는 경우 작업을 실행할 수 있다.2. 작업 예약 관리일회성 또는 반복적으로 실행할 작업을 예약할 수 있다.작업 그룹을 함께 모니터링하거나 취소할 수 있다.예약된 작업은 내부적으로 관리되는 SQLite 데이터베이스에 저장되며 WorkManager에서 기기를 재부팅해도 작업이 유지되고 다시 예약되도록 보장절전 기능을 사용하고 권장사항(Doze Mode)을 준수배터리 소모를 우려하지 않아도 됨3. 신속 처리 작업백그라운드에서 즉시 실행할 작업을 예약할 수 있다...