Programming/Android
-
LiveDataProgramming/Android 2020. 11. 6. 23:20
LiveData란? LiveData는 Android JetPack 라이브러리 중 하나이다. JetPack은 개발자가 관심있는 코드에 집중할 수 있도록 권장사항 준수, 상용구 코드 제거, 모든 Android 버전과 기기에서 일관되게 작동하는 코드 작성을 돕는 라이브러리 모음입니다. 쉽게 말하면, JetPack은 안드로이드 개발을 돕는 라이브러리의 모음이다. LiveData는 JetPack 의 일부이다 식별 가능한 데이터 홀더 클래스이다. 일반 클래스와 달리 LiveData는 LifeCycle를 인식하여 고려한다. 이를 통해 LiveData는 활성 LifeCycle 상태에 있는 앱 컴포넌트 Observer만 업데이트한다. Observer 클래스로 표현되는 Observer의 생명주기가 STARTED or RE..
-
[Android] Android App Architecture GuideProgramming/Android 2020. 9. 17. 23:30
안드로이드 개발자 레퍼런스를 보면, 고품질의 앱을 빌드하기 위한 앱 아키텍처 가이드 문서를 제공한다. 모바일 앱 사용자 환경 일반 데스크톱 앱과 달리 Android 앱 구조는 복잡하다. 안드로이드 앱은 Activity, Fragment, Service, Contents Provider, Broadcast Receiver를 비롯하여 여러 앱 컴포넌트가 포함된다. 개발자는 Menifest에서 이러한 컴포넌트를 선언하며, Android OS에서 Menifest를 사용하여 사용자 환경에 앱을 통합하는 방법을 결정한다. SNS 앱에서 사진을 공유하는 상황을 생각해보았을 때, 해당 과정에서 언제든지 전화나 알림에 의해 사용환경이 중단될 수 있다. 사용자는 이 중단에 대응하고 난 후에 사진 공유 프로세스에 돌아가서 ..
-
[Android] Repository Pattern 의 이해Programming/Android 2020. 9. 17. 23:06
Repository Pattern이란? 데이터 출처와 관계 없이 동일 인터페이스로 데이터에 접근할 수 있도록 만드는 것을 Repository 패턴이라고 합니다. 레포지토리는 데이터 소스에 접근하는 데 필요한 논리를 캡슐화하는 클래스 또는 구성 요소입니다. Repository 패턴을 사용하는 이유 Repositoires are classes or componets that encapsulate the logic requriedto aceess data soruces Repository는 DataSource 를 캡슐화 한다. 데이터 로직을 분리시킬 수 있다. 중앙 집중처리 방식으로, 언제나 일관된 인터페이스로 데이터를 요청할 수 있다. 그렇기 때문에, 클라이언트가 어떤 데이터를 사용할지 선택할 필요 없이, ..
-
REST API : 웹상의 자원에 접근하는 방식을 정의한 아키텍처Programming/Android 2020. 9. 13. 00:46
REST(REpresentational State Transfer)란? - 웹의 장점을 최대화 할 수 있는 아키텍처 - HTTP 프로토콜 기반으로 웹상의 자원에 접근하는 방식을 정해놓은 아키텍처/인터페이스 REST의 속성 1. 서버에 있는 모든 Resouce는 각 Resource당 클라이언트가 바로 접근할 수 있는 고유 URI가 존재한다. 2. 모든 요청은 클라이언트가 요청할 때마다 필요한 정보를 주기 때문에 서버에서는 세션 정보를 보관할 필요가 없습니다. 그렇기 때문에 서비스에 자유도가 높아지고 유연한 아키텍처 적응이 가능합니다. 3. HTTP 메소드를 사용한다. 모든 Resource는 일반적으로 HTTP 인터페이스인 GET, POST, PUT, DELETE 4개의 메소드로 접근되어야 한다. 4. 서비..
-
-
[아키텍처] MVP Pattern의 이해Programming/Android 2020. 9. 1. 02:36
MVC 패턴 단점 MVC 패턴은 UI와 비즈니스 로직이 분리되지 않아 액티비티(컨트롤러)가 방대해진다. 컨트롤러는 뷰와 모델에 의존적이고 뷰는 모델에 의존적이라 결합도가 높아 유닛테스트가 거의 불가능하다. 궁극적으로 유지보수비가 증가하고 생산성이 저하되는 것이다. MVP 패턴은 UI와 비즈니스 로직을 분리시키는데 초점을 둔다. 뷰는 사용자에게 화면을 보여주고, 사용자는 뷰와 상호작용한다. 뷰는 사용자 이벤트를 프레젠터에게 전달하고, 프레젠터는 데이터(모델)를 업데이트(저장/수정/삭제)한다. 프레젠터는 변경된 모델(데이터를) 가져와서 UI를 업데이트(화면 갱신) 한다. 장점 프레젠터는 뷰와 모델의 인스턴스를 가지며 이 둘을 연결해 주는 역할을 하므로 Presenter와 View는 1:1 관게를 갖는다. 따..
-
[Android] ViewHolderProgramming/Android 2020. 8. 14. 17:43
ViewHolder란 View를 보관하는 객체이다. ListView와 RecyclerView는 inflate를 최소화하기 위해 View를 재활용 한다. 이 때, 각 뷰의 내용을 업데이트 하기 위해 findViewById를 매번 호출 해야한다. 이로 인해 성능저하가 일어남에 따라 ItemView의 각 요소를 바로 엑세스 할 수 있도록, 저장해두고 사용하기 위한 객체이다. 성능 향상을 위한 방법론이다. 각 아이템이 보여질 때마다 inflate되는 것을 최소화하여 성능을 높이기 위해 ViewHolder에 View를 저장하여 사용한다. ※ inflate? : xml 기술된 View의 정의를 실제 VIew 객체로 만드는 것(메모리에 올리는 것)을 말함. ListView에서 ViewHolder getView()에서..
-
안드로이드 빌드 도구, GradleProgramming/Android 2020. 8. 12. 21:04
Gradle이란 빌드도구이다. 안드로이드 스튜디오(IDE)와 Gradle(빌드도구)는 독립적이다. => Sync(동기화)작업을 수행해야한다. 안드로이드 스튜디오는 IDE와 빌드도구가 분리되어 있어 프로젝트를 보다 깔끔하게 관리가 가능하다. build.gradle 파일 모듈의 빌드 방법을 정의한 빌드스크립트 파일이다. Gadle은 Android 앱이나 라이브러리를 컴파일, 빌드 및 패키징하기 위한 유연한 방법을 제공한다. apply plugin: 'com.android.application' 안드로이드 플러그인 사용을 gradle에 적용하는 것. android [...} 안드로이드와 관련된 빌드 설정을 세팅하는 블럭 compileSdkVersion, buildToolsVersion compileSdkVer..