Android/AAC
-
Android Architecture Components #7 - WorkManagerAndroid/AAC 2019. 8. 6. 22:19
WorkManager는 특정 작업을 유예(Defer) 처리, 비동기 처리를 목적으로 만들어 졌다. 유예 처리라는 것은 특정 시점, 특정 상황에서 작업을 처리함을 이야기 한다. JobSchduler 혹은 FirebaseJobDispatcher, AlarmManager 같은 클래스를 이용해 처리했었는데 WorkManager는 위의 클래스와 다른 방식이 아니라 통합하기 위한 라이브러리이다. 즉, WorkdManager를 이용하면 상황에 따라 위의 3가지중 하나를 반환한다. 결국 특정 작업의 유예, 비동기 처리를 조금 더 쉽게 작성하기 위한 라이브러리 이다. JobSchduler는 API Level 21에 추가되었고 FirebaseJobDispatcher는 API Level 9에서 추가가되었지만 기기의 Goog..
-
Android Architecture Components #6 - PagingAndroid/AAC 2019. 8. 6. 17:58
RecyclerView에서 페이징 처리를 조금더 쉽고 효율적으로 작성하게 하기 위한 라이브러리이다. 많은 양의 데이터를 한꺼번에 로딩하지 않고 점진적인 로딩방법을 이용함으로 네트웤 사용량 및 시스템 리소스를 적게 사용이 가능하다. Gradle Dependency implementation 'androidx.paging:paging-runtime:2.1.0' // Rx 호환 선택 implementation "androidx.paging:paging-rxjava2:2.1.0" 1. DataSource 생성하기 DataSource는 실제 데이터를 획득하는 역할을 한다. 데이터는 Network에서 받아온 데이터 또는 DB에서 받아오는 데이터 일 수도 있다. DataSource는 추상 클래스로 이를 구현한 Ite..
-
Android Architecture Components #5 - RoomAndroid/AAC 2019. 8. 5. 18:04
대부분의 앱들은 대량의 데이터를 데이터베이스에 구조화 시켜서 영속적으로 저장한다. 이를 Room이라는 라이브러리를 사용하면 쉽게 작성이 가능하다. 구글에서는 안드로이드 앱의 데이터베이스 이용을 Room으로 작성할것을 강력하게 권고하고 있다. ROOM은 ORM(Object Relational Mapping) 으로써 쉽게 말해 데이터베이스의 객체를 자바 or 코틀린 객체로 매핑해주는것 입니다. ROOM은 SQLite의 추상레이어 위에 제공하고 있으며 SQLite의 모든 기능을 제공하면서 편한 데이터베이스의 접근을 허용합니다. Room과 SQLite의 차이점 1. SQLite 경우 쿼리에 대한 에러를 컴파일에 확인하는것이 없지만 ROOM에서는 컴파일 도중 SQL에 대한 유효성을 검사 가능합니다 2. Schem..
-
Android Architecture Components #4 - NavigationAndroid/AAC 2019. 8. 5. 18:04
Navigation을 사용하려면 Fragment에 대해서 잠시 짚고 넘어가야 한다. Fragment는 하나의 액티비티가 여러 개의 화면을 가지도록 만들기위해 고안된 개념으로 옛날에 태블릿의 화면 구성을 위해서 1개의 액티비티의 3개의 화면을 출력하고 싶으나 그 당시 View로서는 불가능하거나 너무 어려운 처지였다. 그래서 Fragment라는 것을 만들었다고 한다. 이러한 Fragment를 좀 더 쉽게 다루고 화면 전환시의 코드나 전체적인 앱의 흐름을 파악하기 좋게 하기 위해 IOS의 스토리보드가 있듯이 안드로이드에도 Navigation이라는 것을 만들어서 사용을 하게 되었다. 단, Activity는 지원하지 않으며 오직 Fragment만 지원을 한다. 그래서 액티비티 1개에 여러개의 프래그먼트가 들어가는..
-
Android Architecture Components #3 - LiveDataAndroid/AAC 2019. 7. 31. 16:11
제목부터 재미있어 보이는 LiveData! LiveData는 Activity나 Fragment의 수명주기에 따라 Observable한 data holder 클래스이다. 따라서 어떤 데이터의 실시간 변화에 따른 UI 업데이트가 필요할 때 사용합니다. Observer pattern을 사용하여, UI component가 data가 변화를 요청하여 변경점이 있으면 업데이트 하는것이 아니라, Data driven 방식으로 data가 변경되면 UI에게 업데이트를 알려준다. 실제로 ViewModel에서 데이터를 가져다 쓰는 View 입장에서는 ViewModel의 데이터가 바뀌면 View로 바뀌어야 하는데 실제 Rx나 LiveData를 쓰지 않고서는 좀 복잡하게 캐치를 해야하는 번거러움이 있다. 이를 Google에서 ..
-
Android Architecture Components #2 - ViewModelAndroid/AAC 2019. 7. 31. 15:46
Android Arcitecture Component 중 한개인 ViewModel에서 알아보자 ViewModel은 MVVM 공부를 하면서 알아보았던 개념인데 View와 Model사이에서 징검다리 역할과 View의 추상 개념으로 View가 가지고 있어야 할 데이터를 ViewModel에서 가지고 있어 View의 역할을 충실히 만들자는 것이 목표이다 그래서 이러한 ViewModel의 구현을 도와주고자 나온것이 ViewModel...!? 이름이 똑같아서 헷갈리기는 하나 전혀 다른 존재인거를 명심하자 ACC ViewModel의 특징은 화면 회전시 데이터를 유지해준다는 점이다 안드로이드에서 화면을 돌리면 OnDestroy -> OnCreate가 되어 가지고 있던 데이터를 다 날리는 셈이 된다. 예를 들면 버튼을 클..
-
Android Architecture Components #1 - DataBindingAndroid/AAC 2019. 7. 24. 00:07
우리가 흔히 개발하는 View 코드를 아래에서 살펴보도록 하자 class MainActivity : AppCompatActivity() { private lateinit var textName: TextView private lateinit var textAge: TextView private lateinit var textEmail: TextView private lateinit var textPhone: TextView override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) textName = main_view_name textAg..
-
Android Architecture Component가 뭐야?Android/AAC 2019. 7. 23. 22:00
먼저 안드로이드를 이야기하면 안드로이드는 컴포넌트 기반이다. CBD 방법론 ( Component Based Dev ) : 컴포넌트 여러 개를 조합하여 하나의 앱을 개발 우리가 흔히 보는 디자인 패턴에 대해서 한번 이야기를 해보자 MVC 패턴 ( Model + View + Controller ) 초기에는 클라이언트 사이드에서 사용하였다. 웹에서 서버에 데어터가 들어오면 어쩄든 화면에 출력시키는 것이 목적이기에 MVC를 사용 하였다 안드로이드에서 이를 적용 시키면 DB에 접근하는 클래스가 Model Class! 화면에 출력을 담당하고 이벤트를 받아오는 것이 Activity Class! 실행 순서 1. Controller를 통해 입력을 함 2. Controller가 Model과 View에게 입력을 보냄 3. ..