코루틴 비동기 경량 스레드 - "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..
Activity란? 더보기 - 안드로이드 앱의 4가지 구성 요소(Activity, Service, Broadcast Receiver, Content Provider) 중 하나 - 사용자 인터페이스(UI)를 포함한 화면 하나를 나타냄 - 대부분의 앱은 여러 Activity로 이루어져 있음 - 안드로이드 시스템과 안드로이드 앱의 주요 상호작용을 도움 - main() 메소드를 호출하여 프로그램을 실행하는 프로그래밍 패러다임과 달리, 수명 주기의 특정 단계에 해당하는 특정 콜백 메소드를 호출하여 Activity 인스턴스의 코드를 시작 - 모바일 앱 환경은 사용자와 앱의 상호작용이 항상 동일한 위치에서 시작되는 것은 아님 => 사용자와 앱의 상호작용에 따라 앱이 시작되는 Activity가 다를 수 있고, Acti..
BottomNavigation ( + ViewPager2) 종속성 추가 android { buildFeatures { viewBinding true } } dependencies { ... implementation "androidx.viewpager2:viewpager2:1.0.0" } 뷰바인딩을 사용하기 위해 뷰바인딩 속성도 추가해주었다! 아이템 추가 res → new → Android Resource File Resource type을 Menu로 하고 Directory name도 menu로 해서 리소스 파일을 생성해준다 해당 파일에서 사용할 아이템들을 정의해준다. 메인 레이아웃 뷰페이저 어댑터 class ViewPagerAdapter(fragment: FragmentActivity) : Fragme..
인텐트란? 컴포넌트를 실행하려고 시스템에 전달하는 메시지 기능을 수행하는 함수를 제공하는 클래스가 아니라 데이터를 담는 클래스 이 때, 데이터는 컴포넌트를 실행하는 정보이며 이 정보가 담긴 인텐트 객체를 시스템에 전달하면 컴포넌트가 실행된다 * 액티비티는 매니페스트 파일에 등록해야 한다. 액티비티 클래스 하나당 태그 하나로 등록해야 하며, name 속성은 생략 불가능하다. * 액티비티뿐만 아니라 서비스, 브로드캐스트 리시버, 콘텐츠 프로바이더도 매니페이스 파일에 등록해야 한다. 그 이유는 시스템에 컴포넌트를 알려야 하기 때문이다. 시스템은 런타임 때 매니페스트 파일의 정보를 참조하여 앱을 실행한다. val intent: Intent = Intent(this, DetailActivity::class.jav..