본문 바로가기

Android/JetPack9

Paging3 알아보기 Paging3 Index Paging3 Index Paging3란? 기존 Paging 구현 방식 Paging3 기능 및 장점 핵심 개념 PagingSource load 함수 getRefreshKey 함수 PagingData Paging.flow PagingDataAdapter LoadStateAdapter를 사용하여 Header, Footer 추가하기 구분자(Separator) 추가하기 네트워크 및 데이터베이스에서 페이징(RemoteMediator) Room 설정 Entity 추가 Dao 추가 Database 정의 RemoteMediator 구현 load 함수 구현 Pager 빌더로 PageData flow 생성 Paging3란? 로컬 저장소에서나 네트워크를 통해 대규모 데이터 세트의 데이터 페이지를 로.. 2021. 9. 27.
AAC - viewModel AAC(Andorid Architecture Component) - viewModel viewModel알아보기! 안드로이드 아키텍처 컴포넌트 viewModel은 UI관련 데이터를 저장하고 관리하기 위하여 설계되었습니다. 스크린 회전 같은 상태 변화에도 데이터가 보존될 수 있도록 합니다. 안드로이드기기를 회전한다면 안드로이드 생명주기는 위 그림의 왼쪽처럼 화면이 Destroy되고 다시 Create되는 과정을 거치게됩니다. 위같은 회전에대하여 간단한 데이터같은 경우 onSaveInstanceState()메소드를 이용하여 저장하고 다시 onCreate()에서 다시 데이터를 받을 수 있지만, serialize가 가능한 간단한데이터만 가능합니다. bitmap같은 많은양에 데이터는 부적합합니다. 또한 화면회전의 상.. 2019. 9. 2.
Jetpack - LiveData Jetpack - LiveData AAC LiveData란 ?? ( Android Architecture Components) LiveData관찰 가능한 데이터 홀더 클래스입니다. 일반 관찰 가능과 달리 LiveData는 수명주기를 인식하므로 활동, 프래그먼트 또는 서비스와 같은 다른 앱 구성 요소의 수명주기를 존중합니다. 이 인식은 LiveData가 활성 수명주기 상태 인 앱 구성 요소 관찰자 만 업데이트하도록합니다. 즉, LiveCycle을 알고있는 DataType이라고 할 수 있습니다. liveData는 observer pattern입니다.즉 데이터의 변경이 일어났을때 ,그 변경을 받아 처리합니다 . 하지만 liveData는 거기다 수명주기를 알고 있습니다. 그래서 liveData는 수명주기를 존중.. 2019. 8. 13.
Jetpack - Paging Library (1) Jetpack - Paging Library (1) 페이징이란? 페이징은 데이터베이스의 데이터를 일정한 덩어리로 나눠서 제공하는 것을 의미합니다. Android라는 키워드를 입력했을 때, 구글은 약 28억 개에 해당하는 모든 검색 결과를 클라이언트로 내려주는 대신 상위 10개의 결과만을 보여줍니다. 이렇게 함으로써 구글은 사용자에게 원하는 결과를 빠르고 제공할 수 있고, 클라이언트에서는 이를 통해 성능, 메모리, 네트워크 비용을 효과적으로 다룰 수 있습니다. 안드로이드에서는 바로 스크롤을 이용해 데이터를 점진적으로 불러오는 무한 스크롤링 기법으로 사용할 수 있습니다. 개념 정리 PagedList: DataSource로 부터 가져온 불변 데이터 및 페이지에 대한 정보를 들고 있으면서, PagedListAd.. 2019. 8. 13.
Jetpack - Workmanager (2) Jetpack - Workmanager (2) 워크매니저 자세히 살펴보기 1. 작업상태 확인 완료 된 작업에 대해 사용자에게 알림을 통보해 주거나, 화면에 표시된 프로그래스바를 감춰야 하기도 하고,다시 새로운 작업을 실행 해야 하기도 합니다. WorkManager.getInstance().getWorkInfoByIdLiveData(work.id) .observe(lifecycleOwner, Observer { workInfo -> if (workInfo != null && workInfo.state == WorkInfo.State.SUCCEEDED) { // 작업 완료 } }) work 는 request입니다. Requst에서 아이디를 가져와 라이브데이터로 관찰할 수 있습니다. 지정된 Observer 에.. 2019. 5. 6.
Jetpack - Workmanager (1) Jetpack - WorkManager jetpack의 Architecture의 일부인 Workmanager에 대하여 알아보도록 하겠습니다. 안드로이드 초기에는 백그라운드 작업이 수월했었습니다. 서비스 하나를 생성하여 쉽게 사용자 뒤에서 백그라운드 작업을 수행할 수 있었습니다. 브로드캐스트 리시버를 사용하여 개발자가 원하는 시점에 앱을 깨워서 작업할 수도 있었습니다. workmanager 이전의 안드로이드 백그라운드 작업 자세히 알아보기 - https://beomseok95.tistory.com/192 Workmanager 이전의 안드로이드 백그라운드작업 Workmanager 이전의 안드로이드 백그라운드작업 Jetpack의 workmanager에대하여 알아보기 전에 이전의 안드로이드 백그라운드작업을 어떻.. 2019. 5. 6.
Workmanager 이전의 안드로이드 백그라운드작업 Workmanager 이전의 안드로이드 백그라운드작업 Jetpack의 workmanager에대하여 알아보기 전에 이전의 안드로이드 백그라운드작업을 어떻게 처리했었는지 알아보도록 하겠습니다 . 1.android K (킷켓,API 19)이전 킷케버전 이전에서는 실행 및 종료 여부에 상관없이 수행되는 백그라운드 작업을 다음과 같이 처리해왔습니다. 기본은 AlarmManager 와 브로드캐스트 리시버를 사용하는 것입니다. AlarmManager 의 명세대로 우리가 지정한 타이밍에 딱 시스템에서는 알람이 오고, 이 알람에 맞춰서 백그라운드 작업을 수행하면 됐습니다만, 안드로이드 K (킷켓, API 19) 부터는 알람이 한없이 미뤄지거나 한번에 몰아서 처리되는 등 정확한 실행을 보장하지 않게 되었습니다. 안드로이드.. 2019. 5. 6.
Jetpack - Navigation Jetpack - Navigation 네비게이션은 앱의 목적지, 즉 사용자가 탐색 할 수있는 앱의 어느 곳에서나 발생합니다 . 이러한 대상은 작업을 통해 연결됩니다 . 네비게이션 그래프는 당신의 목적지와 행동을 모두 포함하는 리소스 파일입니다. 그래프는 앱의 모든 탐색 경로를 나타냅니다. 대상 은 앱의 다른 콘텐츠 영역입니다. 동작 은 사용자가 사용할 수있는 경로를 나타내는 대상 간의 논리적 연결입니다. 프로젝트에 탐색 그래프를 추가하려면 아래와같이 설정합니다. 프로젝트 창에서 res디렉토리를 마우스 오른쪽 버튼으로 클릭 하고 새로 만들기> Android Resource File을 선택합니다. 새 리소스 파일 대화 상자가 나타납니다. 파일 이름 필드에 "nav_graph"와 같은 이름을 입력합니다. 선택.. 2019. 5. 2.
Jetpack 알아보기 Jetpack이란 ?? Jetpack components 젯팩은 기능에 따라 크게 네가지의 컴포넌트로 구분할 수 있으며, 각각의 컴포넌트는 독립적인 활용이 가능합니다 1. Architecture : 구글에서 제안하는 안드로이드 아키텍처를 구현할 수 있는 기능들로 구성되어 있다. View를 포함한 UI 요소의 lifecycle management를 비롯하여 LiveData와 ViewModel, Room등의 기능이 여기에 포함됩니다 2. Foundation : 안드로이드 시스템의 핵심 기능을 담당하는 컴포넌트로, AppCompat을 비롯하여 코틀린 익스텐션과 Multidex 등이 포함됩니다 3. Behavior : 앱의 동작과 관련한 것들로 알림(notification)을 비롯하여 다운로드 매니저나 권한(p.. 2019. 5. 2.