목록분류 전체보기 (58)
계발자 블로그
코틀린을 사용하면서 많이 등장 하길래 한번쯤 제대로 정리 해 봐야겠다 생각해서 오늘은 코틀린의 스코프 함수에 대해 알아보겠습니다. Scope Function이란? 객체의 컨텍스트 내에서 코드 블럭을 실행할 수 있도록 해주는 함수입니다. Scope function은 이름처럼 Scope(범위)가 생깁니다. 해당 범위에서 특정 객체의 컨텍스트를 가지고 동작을 하는 것입니다. 람다식과 동일하게 작성을 하며, 이 범위 내에서는 객체의 이름이 없어도 객체에 접근할 수 있습니다. let, with, run, apply, also가 이에 해당됩니다. Scope function에는 두가지 차이점이있습니다. 1. Context Object를 참조하는 방법(this, it) 2. Return value 1. Context ..
Retrofit이란? Squareup사에서 만든 API 통신 라이브러리입니다. 네트워크 통신을 위해 비동기 처리로 사용해왔던 AsyncTask보다 3배 ~ 10배의 성능이 향상되었습니다. 반복된 작업을 라이브러리로 넘겨서 처리가 되어 구현이 간단합니다. Annotation 사용으로 코드의 가독성이 뛰어나고 직관적인 설계가 가능합니다. 사용법 우선 이번에 사용할 url 주소입니다. https://run.mocky.io/v3/b8384223-152e-4d1a-a90c-f793731e5715 보시면 json 형태로 데이터들이 들어가 있습니다. 1. Gradle 의존성 추가 implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.sq..
ViewPager2 https://developer.android.com/training/animation/vp2-migration?hl=ko ViewPager에서 ViewPager2로 이전 | Android 개발자 | Android Developers ViewPager에서 ViewPager2로 이전 ViewPager2는 ViewPager 라이브러리의 개선된 버전으로, 향상된 기능을 제공하며 ViewPager 사용 시 발생하는 일반적인 문제를 해결합니다. 앱에서 ViewPager를 이미 사용하고 developer.android.com 뷰페이저는 화면을 스크롤 해서 넘겨 볼수 있는 프래그먼트 간 슬라이드입니다 기존에는 ViewPager를 사용해왔는데 개선된 버전의 ViewPager2가 나왔습니다. View..
Collection collection이란 여러 원소들을 담을 수 있는 자료구조입니다. 코틀린 외에도 다양한 프로그래밍 언어들에 존재합니다. 코틀린의 collection은 List, Set, Map이 포함됩니다 코틀린 컬렉션은 다른 언어와 다르게 변경 가능한(Mutable) 컬렉션과 변경 불가능한(Immutable) 컬렉션을 구분해 사용합니다. 크게 두개의 인터페이스가 있습니다 읽기 전용(read-only) : 원소에 접금만 가능 변경 가능(mutable) : 삽입, 삭제, 수정 가능 mutable collection을 사용하기 위해서 var를 사용해야만 하는 것은 아닙니다. 변수가 참조하는 컬렉션이 쓰기 동작에 의해 변경 되는 것이고 참조자인 변수가 변경 되는 것이 아니기 때문입니다. 하지만 val로 ..
우선 순위 큐(Priority Queue) 일반적인 큐(Queue)는 먼저 들어온 데이터가 먼저 나가는 First-In First-Out의 FIFO 구조입니다. 우선 순위 큐는 들어간 순서에 상관없이 우선 순위가 높은 데이터가 먼저 나오는 것입니다. 우선 순위 큐는 힙 자료구조를 이용해 구현할 수 있습니다. 완전 이진 트리인 힙 구조이고 최대 힙입니다. 여기에 9가 추가 되었습니다 그럼 완전 이진 트리의 조건을 만족시키기 위해 왼쪽부터 채워져서 현재 자리에 위치하게 됩니다 그럼 9는 최대 힙 구조를 만족 시키기 위해 처음 부모 노드였던 3과 자리를 바꾸고 또 부모 노드였던 6과 자리를 바꾸게 됩니다. Push 연산을 봤으니 삭제하는 Pop 연산을 보겠습니다 최대 힙 구조에서 우선도가 가장 높은 17이 빠..
Data Structure 자료구조란? 사전적인 의미는 자료(Data)의 집합의 의미하며, 각 요소들이 논리적으로 정의된 규칙에 의해 나열되며 자료에 대한 처리를 효율적으로 수행할 수 있도록 자료를 구분하여 표현한 것이라고 합니다. 쉽게 말하면 현실을 프로그래밍 적으로 표현 하는 것이라고 할 수 있습니다 또한 큰 데이터를 효율적으로 관리하는 것 역시 자료구조의 중요한 목적이라고 할 수 있습니다 예를 들어 집에 한권의 책이 있다면 굳이 정리할 필요가 없습니다 그런데 만약 100권 500권 있다면 이걸 그냥 냅두면 집이 매우 엉망이거나 원하는 책을 찾기 어려울 것입니다. 하지만 이것을 책장을 이용해 정리를 한다면 책이 차지하는 공간도 작아지고 필요한 책을 빠르게 찾을 수 있을 것입니다. 컴퓨터에서도 마찬가지..
인텐트 및 인텐트 필터 | Android 개발자 | Android Developers An Intent is a messaging object you can use to request an action from another app component . Although intents facilitate communication between components in several ways, there are three fundamental use cases: An Activity represents a single screen in… developer.android.com intent는 안드로이드 개발 시 Activity간의 화면 이동과 함께 데이터 전달하는 목적으로 많이 사용하게 됩니다 intent에 ..
RecyclerView 안드로이드 개발 하다 보면 무언가를 리스트로 나타내줘야 하는 경우가 상당히 많습니다. 우리가 사용하는 앱들도 어떻게 보면 다 리스트 형식으로 나타나있죠 카톡에 친구 목록, 채팅 목록, 인스타그램 피드 등등 이러한 리스트를 스크롤 가능하게 구현 해주는 것이 리사이클러뷰(RecyclerView)입니다. 이와 비슷한 ListView라는 것이 있는데 재사용성에서 리사이클러뷰가 뛰어나기 때문에 리사이클러뷰를 사용하는 것입니다. 이것은 ViewHolder를 리스트뷰에서는 권장하는 것이고 리사이클러뷰에서는 무적권 사용해야 한다는 차이인데 ViewHolder를 통해 만든 객체를 재사용하기 때문입니다. 또한 리사이클러뷰에서는 애니메이션을 사용할 수 있고, LayoutManager를 이용해 리스트를..
Subject란? Subject는 Observable과 Observer를 모두 구현한 추상 타입으로 하나의 소스로 부터 다중의 구독자에게 멀티 캐스팅이 가능합니다. Subject는 Observer를 구현하므로 onNext(), onError(), onComplete()등의 메서드를 수동으로 호출하여 이벤트를 구독자들에게 전달할 수 있습니다. Subject는 Hot Observable입니다. Subject에는 PublishSubject, SerializedSubject, BehaviorSubject, ReplaySubject, AsyncSubject, UniCastSubject가 있습니다 이번에는 PublishSubject와 BehaviorSubject를 알아보겠습니다 PublishSubject Publi..
Scheduler란? RxJava에서는 스케줄러(Scheduler)라는 도구를 사용하여 멀테 스레드와 같은 비동기 작업을 도와줍니다 스케줄러의 종류 IO 스케줄러 IO스케줄러는 네트워크 요청, 데이터베이스 쿼리 작업을 하거나 파일 시스템 환경 등의 작업에서 비동기 처리를 위한 스케줄러 입니다 newThread 스케줄러 매번 새로운 스케줄러(스레드)를 생성합니다. computation 스케줄러 단순 반복적인 작업, 콜백 처리 그리고 다른 계산적인 작업에 사용됩니다. Trampoline 스케줄러 새로운 스레들르 생성하지 않고 현재 스레드에 무한한 크기의 큐를 생성하는 스케줄러입니다 모든 작업을 순차적으로 실행하는 것을 보장합니다. (FIFO) mainThread 스케줄러 RxAndroid에서는 안드로이드 메..