본문 바로가기

분류 전체보기71

[Android/Kotlin] 코루틴: Kotlin에서 비동기 프로그래밍을 간소화하는 방법 코루틴(Coroutine)은 비동기 프로그래밍을 단순화하기 위해 코틀린(Kotlin)에서 제공하는 기능입니다.비동기 프로그래밍은 여러 작업을 동시에 진행할 수 있게 해주어, 애플리케이션의 효율성과 반응성을 향상시킵니다.하지만, 전통적인 방법으로 구현할 경우 코드가 복잡해지고, 에러 처리가 어려워지는 등의 문제가 발생할 수 있습니다. 코루틴은 이러한 문제를 해결하기 위해 등장했습니다.코루틴의 주요 특징은 다음과 같습니다.경량성(Lightweight): 코루틴을 사용하면 많은 수의 동시 작업을 생성할 수 있으며, 이는 전통적인 스레드를 사용하는 것보다 훨씬 적은 리소스를 사용합니다.비동기 코드의 단순화(Simplifying asynchronous code): 코루틴을 사용하면 비동기 코드를 동기 코드처럼 읽.. 2024. 5. 29.
[Kotlin] Kotlin에서 class와 object의 차이점 및 활용 방안: 싱글톤 패턴과 유연성 비교 Kotlin에서는 class와 object 키워드를 사용하여 클래스를 정의할 수 있으며, 이 두 방식은 중요한 차이점을 가지고 있습니다. 특히, object 키워드는 싱글톤 패턴(Singleton Pattern)을 구현하기 위해 사용됩니다. 싱글톤 패턴을 적용하면 애플리케이션 전체에서 단 하나의 인스턴스만 존재하게 되며, 이는 여러 면에서 유용합니다. 싱글톤 패턴과 objectobject로 선언된 클래스는 애플리케이션 전체에서 오직 하나의 인스턴스만을 가집니다. 이는 특히 상태를 공유하지 않는 유틸리티 메서드들이나 전역적으로 접근해야 하는 자원을 관리할 때 유용합니다. 예를 들어, 네트워크 호출과 같은 작업을 수행하는 NetworkUtils 클래스가 있다고 가정해봅시다. 이 클래스를 object로 선언함.. 2024. 5. 28.
[Android] Hilt를 활용한 Android 의존성 주입: @HiltAndroidApp으로 애플리케이션 컨테이너 설정하기 Hilt와 관련된 설명에서 "컨테이너"라는 용어는 종속 항목(의존성)을 관리하고 저장하는 구조를 의미합니다. 쉽게 말해, Hilt를 사용하는 Android 애플리케이션에서 컨테이너는 앱의 다양한 부분(예: 액티비티, 프래그먼트, 서비스 등)이 필요로 하는 객체들을 생성하고, 저장하며, 필요한 곳에 제공하는 역할을 합니다.Hilt 컨테이너의 역할객체 생성: 필요한 객체를 생성하는 공장 같은 역할을 합니다.객체 저장: 생성된 객체를 저장하여, 같은 객체를 여러 곳에서 재사용할 수 있도록 합니다.객체 제공: 저장된 객체를 필요한 곳에 자동으로 제공합니다.@HiltAndroidApp 주석의 역할@HiltAndroidApp은 애플리케이션의 시작점에 붙는 주석으로, Hilt를 사용하기 위한 초기 설정을 의미합니다... 2024. 5. 21.
[Android/Kotlin] 안드로이드 네비게이션: NavController 찾기의 두 가지 방법 비교 안드로이드 개발 시 자주 마주치는 네비게이션 컴포넌트, 특히 NavController를 찾는 두 가지 방법에 대해 알아보고, 각각의 장단점을 비교해보는 시간을 가지려고 합니다.안드로이드의 네비게이션 컴포넌트는 앱 내에서 화면 이동(네비게이션)을 용이하게 관리해 주는 매우 중요한 요소입니다. 그렇다면 NavController를 어떻게 찾을 수 있을까요? 아래에서 자세히 알아보겠습니다. 방법 1: 공식 문서 방식공식 문서는 Activity에서 NavHostFragment를 찾고, 그 안에 있는 NavController를 사용하는 방법을 권장합니다.val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as.. 2024. 5. 18.
[Android/Kotlin] BaseFragment를 ViewBinding과 DataBinding 방식으로 생성하는 방법 ViewBinding으로 BaseFragment 생성하기ViewBinding은 UI 컴포넌트에 대한 참조를 더 쉽게 관리할 수 있게 해주는 기능입니다. ViewBinding을 사용함으로써 null 체크나 findViewById 호출의 필요성을 줄일 수 있습니다.abstract class BaseFragmentVB(private val bindingFactory: (LayoutInflater) -> T) : Fragment() { private var _binding: T? = null protected val binding get() = _binding!! override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,.. 2024. 5. 13.
[Android] 안드로이드의 Instrumentation 클래스 소개 Instrumentation 클래스는 안드로이드 애플리케이션에서 앱의 동작을 모니터링하고 제어할 수 있게 해주는 강력한 클래스입니다. 이 클래스는 주로 테스팅과 앱 내부의 이벤트 시뮬레이션에 사용됩니다. 안드로이드 테스팅 프레임워크의 일부로서, Instrumentation 클래스는 애플리케이션의 생명주기 이벤트를 관찰하고, 키 입력이나 터치 이벤트 같은 사용자 인터랙션을 시뮬레이션하며, 다양한 종류의 테스트를 수행하는 데 필수적인 기능을 제공합니다. 주요 기능 및 사용법애플리케이션 생명주기 관리: Instrumentation 클래스를 사용하여 액티비티의 시작, 정지와 같은 생명주기 이벤트를 직접 호출할 수 있습니다. 이를 통해 테스트 중에 애플리케이션의 특정 상태를 재현할 수 있습니다.사용자 이벤트 시뮬.. 2024. 5. 7.
[Android] 안드로이드에서 Rect 클래스 활용하기 Rect 클래스는 안드로이드에서 사각형 영역을 정의할 때 사용되는 클래스입니다. 좌표 시스템에 기반하여, 사각형의 왼쪽 위 모서리와 오른쪽 아래 모서리의 위치를 정의함으로써 사각형의 위치와 크기를 나타냅니다. Rect 객체는 주로 뷰(View)의 크기나 위치를 계산하고, 그래픽을 그릴 때 영역을 지정하는 등의 목적으로 사용됩니다.Rect 클래스는 다음과 같은 네 가지 주요 필드를 가지고 있습니다.left: 사각형의 왼쪽 변의 x 좌표입니다.top: 사각형의 상단 변의 y 좌표입니다.right: 사각형의 오른쪽 변의 x 좌표입니다.bottom: 사각형의 하단 변의 y 좌표입니다.이 네 가지 좌표는 사각형의 위치와 크기를 완벽하게 정의합니다. 예를 들어, left가 10, top이 20, right가 30,.. 2024. 5. 3.
[Android/Java] ActivityResultLauncher 및 ActivityResultContracts 활용 방법 ActivityResultLauncher는 안드로이드 앱 개발에서 다른 액티비티로부터 결과를 받아오기 위해 사용되는 클래스입니다. AndroidX 라이브러리의 일부로, Android 11(R API 레벨 30)이 출시됨과 동시에 소개되었습니다. 기존의 startActivityForResult() 메서드와 onActivityResult() 콜백 방식을 대체하기 위해 도입되었으며, 사용하기 쉽고, 코드가 더 읽기 쉬워지고, 타입 안전성을 높여줍니다. 기본 사용 방법ActivityResultContracts 정의: ActivityResultLauncher를 사용할 때는, 어떤 타입의 액티비티 결과를 기대하는지 정의해야 합니다. 이는 ActivityResultContracts에 있는 다양한 계약 중 하나를 사용.. 2024. 5. 2.
[Kotlin] Kotlin에서의 지연 초기화: lateinit 키워드 이해하기 lateinit는 Kotlin에서 나중에 초기화될 프로퍼티를 선언하기 위해 사용되는 키워드입니다. 코틀린은 널 안정성(null safety)을 중요시하는 언어이기 때문에, 프로퍼티를 선언할 때 반드시 초기화를 해주거나 null 가능 타입으로 선언해야 합니다. 그러나, 어떤 경우에는 클래스의 초기화 과정 중에 바로 프로퍼티 값을 결정하기 어렵거나, 의존성 주입 등으로 인해 객체 생성 이후에 초기화가 이루어져야 할 경우가 있습니다. 이런 경우에 lateinit 키워드를 사용하면 초기화를 지연시킬 수 있습니다. lateinit의 주요 특징:초기화 지연: lateinit 키워드를 사용하면 선언 시점에서 바로 초기화하지 않고, 나중에 초기화할 수 있습니다.널이 아닌 타입 사용 가능: lateinit으로 선언된 프.. 2024. 4. 30.