분류 전체보기
-
안드로이드 비동기 처리 1 (Thread, Runnable, Executor Service)안드로이드 학습/Android 기술면접 대비 2024. 7. 18. 13:58
안드로이드에서 비동기 작업을 하는 방법은 여러가지 있다.Thread & RunnableRxJavaCoroutine각각의 방법은 장단점이 있기 때문에 상황에 맞게 적절하게 사용되는 것이 바람직하다. 어느 타이밍에 써야 적합할지를 알기 위해서는 각각 방법을 학습해서 학습할 필요성을 느꼈다. 그래서 먼저 가장 기본적인 Thread를 생성하고 사용하는 3가지 방식을 학습해보리고 한다. Thread 좀 더 간단하게 사용하는 방식은 아래와 같다. 1) Thread를 직접 만들어서 사용하는 방식2) Runnable을 만든 후, Thread에 Runnable을 넘겨서 실행하도록 하는 방식3) Executor Service를 이용해서 Thread Pool을 만들거 Runnable 생성후 submit 하는 방식 아래 ..
-
[TedImagePicker] 1-2. TedImagePickerBaseBuilder오픈소스 공부/TedImagePicker 2024. 6. 1. 15:59
1편에서는 MainActivity부터 TedImagePicker 클래스까지 사용되는 메서드들의 흐름을 보았다.이번장에서는 주 TedImagePickerBaseBuilder의 진행되는 흐름을 보려고 한다. 1편에서 마지막으로 start 메서드를 살펴보았고 마지막으로 statInternal(it)이 실행되는 것을 보았다. contextWeakReference.get()?.let { startInternal(it)} startInternal 메소드는 TedImagePicker 에서 상속받은 TedImagePickerBaseBuilder에 선언되어있다. (MainActivity.kt > TedImagePicker > TedImagePickerBaseBuilder 이동) 1. startInternal ..
-
[Kotlin] in out 키워드코틀린 공부/코틀린 기초 2024. 5. 27. 14:24
요즘 다른 사람들이 만든 라이브러리를 공부하면서 제너릭과 같이 사용하는 out, in 키워드를 발견했다. 제너릭을 잘 활용하기 위해서 out, in 개념이 무엇인지 알 필요성이 있을것 같아서 공부를 하기로 했다. 먼저, in, out 키워드를 공부하면서 3가지 개념이 나온다. Invariance - 불변성Convariance - 공변성Contravariance - 반공변성1. 불변성이란?타입 불변성이란 제너틱 타입을 사용하는 클래스나 인터페이스에서 일치하는 타입만 사용할 수 있다. 즉, 해당 타입의 부모, 자식의 타입은 사용이 불가능하다. in & out 키워드가 없는 일반적인 제너릭이 이런 타입 불변성을 가진다. open class ParentVarianceclass ChildVariance1 : P..
-
[TedImagePicker] 0. 기본 소개 및 공부 방향오픈소스 공부/TedImagePicker 2024. 5. 23. 17:05
TedImagePicker는 안드로이드폰 내부 이미지를 비디오를 다양한 방식으로 가져올 수 있는 라이브러리다.https://github.com/ParkSangGwon/TedImagePicker GitHub - ParkSangGwon/TedImagePicker: TedImagePicker is simple/beautiful/smart image pickerTedImagePicker is simple/beautiful/smart image picker - ParkSangGwon/TedImagePickergithub.com 내부적으로 동기방식으로 가져오는 방식비동기 방식인 Rxjava를 사용하는 방식한가지만 가져오는 방식여러가지 이미지를 가져오는 방식 등등 여러가지를 방법으로 이미지를 가져오는 방법을 지원한다..
-
[TedImagePicker] 1-1. 비동기 방식 이미지 1개 선택 코드 분석오픈소스 공부/TedImagePicker 2024. 5. 23. 17:00
링크 : https://github.com/ParkSangGwon/TedImagePicker TedImagePicker 라이브러리를 다운받고 실행해보면 아래와 같이 나온다. 스크린샷더보기 MainActivity에 해당되는 부분이다. 화면을 보면 아래 2가지 정도로 나눠져 있다. (1) NORMAL/RX (동기/비동기)(2) SINGLE/MULTI (1개/여러개) MainActivity의 첫번째 버튼 코드를 보자면 아래와 같다. (현재 MainActivity.kt)1. setNormalSingleButton 메서드 private fun setNormalSingleButton() { binding.btnNormalSingle.setOnClickListener { TedImagePick..
-
[Kotlin] object코틀린 공부/코틀린 기초 2024. 5. 23. 15:30
object는 코틀린에서 클래스를 정의함과 동시에 객체를 생성하는 것이다. object는 Singleton Pattern을 언어 차원에서 지원한다고 생각하면 이해가 더 쉬울 것 같다. object로 생성된 객체의 특징class 키워드 대신 object 키워드를 사용해서 클래스를 정의함과 동시에 객체를 생성한다. 일반 클래스처럼 프로퍼티, 메소드, 초기와 블록을 가질수 있지만, 생성자는 가질 수 없다.클래스를 상속 받을 수 있고, 여러개의 인터페이스를 갖을 수 있다. 그래서 object는 kotlin에서 크게 3가지 방식으로 사용이 가능하다 1. 객체 선언(Object Declaration)객체 선언은 Singleton pattern을 쉽게 구현할 수 있게 해준다. object로 선언된 객체는 최초..
-
[Kotlin] 스코프 함수 (Scope Function)코틀린 공부/코틀린 기초 2024. 5. 23. 10:30
코틀린은 스코프 함수 라는 것을 제공한다. 스코프 함수는 특정 객체의 특정 동작 (프로퍼티 초기화, 활용 등)을 실행하기 위한 목적만을 가진 함수다. 스코프 함수를 람다 함수로 사용하게 되면 임시로 Scope를 형성하는데, 이 Scope 내에데 객체의 이름을 일일이 참조할 필요 없이 객체를 접근하고 핸들링할 수 있다는 편리하다는 장점이 있다. 코틀린에서 제공하는 스코프 함수는 5가지다.apply, run, with, also, let1. applyapply 함수는 인스턴스를 새로 생성하고 특정 변수에 할당하기 전에 초기화 작업을 해줄수 있는 스코프를 만들어줌apply 함수 내에 모든 명령이 수행되고 나면 명령들이 적용되어 새로 생성된 인스턴스를 반환한다는 특징을 갖는다. data class ScopeF..
-
[Kotlin] 고차함수와 람다함수코틀린 공부/코틀린 기초 2024. 5. 22. 11:22
1. 람다 함수란?람다 함수는 일반 함수와 다르게 fun 키워드도 사용하지 않으며 함수 이름도 없이 변수에 대입해서 사용한다. (익명 함수)// 일반적인 함수 선언 방식fun plus(a: Int, b: Int) : Int { return a + b}// 람다 함수 선언 방식val sum = {a:Int, b:Int -> a+b} 위의 plus함수는 일반적인 함수의 선언 방식이고아래 sum에 할당된 것이 람다 함수이다. 1-1 람다 함수 규칙{ ... } 로 표현한다.{ ... } 안에 -> 가 있으면 왼쪽은 parameter, 오른쪽은 함수의 본문이다. 함수의 return 값은 함수 본문의 마지막 표현식이다. 즉 위에서 sum 에는 a+b의 값이 할당된다. 1-2 선언 방법val sum = {a..
-
[Kotlin] 추상 클래스와 인터페이스코틀린 공부/코틀린 기초 2024. 5. 21. 14:29
자바에서도 추상 클래스 (abstract class)와 인터페이스 (interface)의 개념이 있다. 하지만 코틀린 기초 설명 영상을 보니 자바와는 조금 다른 개념이 포함되어 있는 것 같아 공부해보기로 했다. 1. 추상 클래스란? 코틀린에서 추상 클래스는 일반적으로 설계의 청사진을 제공하며, 공통 기능을 구현해 놓은 클래스다. 이 클래스는 구체적인 내용을 모두 포함하지 않으며, 이를 상속받는 하위 클래스에서 더 구체적인 구현을 해야 합니다. 따라서, 하위 클래스는 추상 클래스의 일부 기능을 상속받고, 추가적인 구체적인 기능을 제공하여 추상 클래스의 설계를 완성하게 됩니다. abstract class가 활용될 상황을 생각해보자면, 공통 기능의 구현과 확장을 통해 여러 클래스 간에 공통된 기능을 공유하..
-
[Kotlin] 코틀린 class (open, data , sealed, internal class)코틀린 공부/코틀린 기초 2024. 5. 17. 15:04
자바에는 없는 코틀린 class에서 다른 키워드들을 학습해보려고 한다. (open, data, internal class) 1. open class기존에 자바에서는 일반 class를 상속하는 것이 가능했다. class Parent{}class Child extends Parent{} 코틀린에서는 class를 상속하기 위해서는 open이라는 키워드를 같이 사용해야 한다. 왜냐하면 코틀린에서는 기본적으로 클래스와 메스드가 다 final 이기 때문이다. open class Parent {}class Child:Parent() {} 메서드를 상속하고 싶다면 open을 붙여줘야 한다. open class Animal(var name:String, var age: Int) { open fun introduce..