프로그래밍/Android (24) 썸네일형 리스트형 Android Jetpack WorkManager와 Coroutine으로 특정 시간에 백그라운드 작업하기 앱 제작 중 자정이 되면 서버 DB의 특정 데이터를 초기화 해주는 작업이 필요했다. 이전에 AAC를 공부하며 봤던 WorkManager가 생각나서 적용해보기로 결정했다. What is WorkManager? WorkManager는 지속적인 작업에 권장되는 솔루션입니다. 앱이 다시 시작되거나 시스템이 재부팅될 때 작업이 예약된 채로 남아 있으면 그 작업은 유지됩니다. 대부분의 백그라운드 처리는 지속적인 작업을 통해 가장 잘 처리되므로 WorkManager는 백그라운드 처리에 권장하는 기본 API입니다. 안드로이드 공식 문서에서는 다음과 같이 설명하고 있다. WorkManager의 구현 1. build.gradle에 종속 항목 추가 dependencies { val work_version = "2.8.0" .. onBackPressed() deprecated 해결 작업 중에 마주한 onBackPressed() Deprecated.. 알아보니 targetSDK 33부터 deprecated 되었고, 대체 방안으로 onBackPressedDispatcher를 사용하면 된다고 함 OnBackPressedDispatcher 사용법 1. callback 메서드 정의 2. onBackPressedDispatcher에 callback 추가 class mainActivity : AppCompatActivity(){ private val callback = object : OnBackPressedCallback(true) { override fun handleOnBackPressed(){ //뒤로 가기 버튼 눌렀을 때 구현할 코드 Log.d(TAG, "뒤로 가기 클릭") } } o.. 안드로이드 코루틴 (Coroutine) What is Coroutine? 정의 Co(함께) + Routine(작업 단위) = 작업들을 함께 수행한다 특징 비선점형 멀티태스킹 Task(작업)가 생성되면 OS의 Scheduler가 가지고 있는 대기 queue에 우선순위에 따라 작업이 들어가게 됩니다. Scheduler는 대기 queue에 올라가 있는 우선순위에 따라 실행 queue로 작업을 이동시키고 CPU core에 올립니다. Scheduler는 정책에 따라 core에 올라간 작업이 충분히 실행되었다고 생각하면 작업이 끝나지 않아도 다시 대기 queue로 작업을 이동시킵니다. 이것이 바로 선점형 방식 따라서 비선점형이라 하면 작업이 끝나기 전에는 임의적으로 작업을 회수할 수 없는 방식을 이야기 합니다. 지연(suspend)과 재개(resume).. Android JetPack Compose What is Compose? 🖼️ 안드로이드 UI 구축을 위한 Kotlin 기반의 최신 Declarative(선언형) UI 프레임워크 🤔 선언형 방식이란? 어떤 결과를 얻고자 하는지 선언하고, 필요한 작업은 추상화된 방식으로 처리합니다. 프로그램 상태를 변경하는 대신 원하는 결과를 표한하는 코드를 작성하는 방식입니다. 따라서 Compose는 UI가 무엇을 무여주면 되는지에 대해서 작성(구현)하면 됩니다. 👀 명령형 방식 어떤 일을 어떻게 해야하는지 명식적으로 작성하는 방법입니다. 조건문, 반복문 등으로 원하는 결과를 얻기 위해 순서를 정확히 작성해야 합니다. 절차/객체 지향 프로그래밍에서의 일적인 방식입니다. Compose의 특징 1. 함수형 프로그래밍 Greeting 함수는 입력 값을 받아들이고 텍스.. Android Architecture Components - ViewModel What is ViewModel? 📀 UI Controller(Activity/Fragment)에서 UI Logic과 Business Logic을 분리하기 위한 JetPack Library 입니다. * UI Logic : 화면에 UI 상태 표시, 사용자의 input을 받아 올바르게 처리하는 등의 로직입니다. ex) 쇼핑몰에서 장바구니 아이콘을 클릭했을 때, 올바른 장바구니 화면으로 이동 * Business Logic : Data를 다루는 로직입니다. ex) 쇼핑몰에서 어떤 옷을 장바구니에 넣었을 때, 해당 옷을 DB에 저장 분리 이유 🧘🏻♀️ UI Controller의 기본 목적인 사용자와의 커뮤니케이션이라는 역할에 집중하기 위해 UI Controller(Activity/Fragment)가 destro.. Android Architecture Components - LifeCycles LifeCycles 👻 생명주기 모니터링을 돕는 라이브러리 입니다. 구성 Owner는 생명주기가 필요한 Activity나 Fragment를 말하고, Observer는 Owner의 생명주기 처리를 담당합니다. LifeCycle 객체에 Observer를 등록하면 Owner 생명주기 변경 시 LifeCycle 객체가 등록된 Observer를 실행하는 구조입니다. LifeCycle Activity와 Fragment의 생명주기 정보를 가지고 있는 클래스 입니다. LifeCycle 객체는 생명주기 변화를 감지하고, 변화가 발생하면 등록된 Observer를 실행하는 역할을 합니다. LifeCycle class는 컴포넌트의 생명주기 추적을 위해 2가지의 Enum을 사용합니다. Event 프레임워크 및 LifeCycle.. Android Architecture Components(AAC)와 Data Binding What is AAC? Android Architecture Components는 테스트와 유지보수가 쉬운 앱을 디자인 할 수 있도록 돕는 라이브러리의 모음을 말합니다. 2017년 Google I/O에서 처음으로 AAC가 발표되었고, 이후 2018년 Google I/O에서 발표된 Jetpack으로 AAC가 통합됩니다. 탄생 배경 Architecture Components가 공개되기 전까지는 안드로이드 앱에서 특정 Architecture를 권장하지 않았습니다. 안드로이드는 여러 컴포넌트들이 있고, 각 생명주기가 다르게 얽혀있어 좋은 앱을 만들기 위해서는 이러한 컴포넌트들을 부드럽게 연결해야 합니다. 이를 위해 개발자들은 MVC, MVP, MVVM 등 상황에 따라 디자인 패턴을 선택하거나 패턴이 없는 모델을.. 안드로이드 스튜디오 레이아웃 (Layout)의 종류 Layout 📌 뷰(veiw)를 담는 veiw group 📌 종류 ✅ 선형 레이아웃 (Linear Layout) ✅ 상대 레이아웃 (Relative Layout) ✅ 프레임 레이아웃 (Frame Layout) ✅ 테이블 레이아웃 (Table Layout) LinearLayout 📌 가로, 세로 방향으로 일렬로 나열할 때 사용 📌 리스트와 같은 직관적 구조를 만들 수 있음 📌 veiw의 위치를 지정하지 않아도 중첩되지 않고❌ 자동으로 나열 📌 속성 속 성 속성값 기능 orientation vertical 뷰(버튼/이미지 등) 수직 배치 horizontal 뷰(버튼/이미지 등) 수평 배치 layout_width wrap_content 뷰(=위젯) 크기만큼 크기 결정 layout_height layout_ma.. 이전 1 2 3 다음