CustomView 는 자주 사용하고, 또 면접에서도 많이 물어보는 것 같다. 이참에 제대로 알아두자 !! 해서 강의 듣고 정리해봄 !! 강의 : Tacademy - Android Application 프로그래밍 중급 19강 Custom View | T아카데미 https://www.youtube.com/watch?v=0Yccqj5tm6s 문서 : https://developer.android.com/guide/topics/ui/custom-components?hl=ko CustomView 개요 Android는 기본 레이아웃 클래스 View 및 ViewGroup에 기반하여 UI를 구축할 수 있는 정교하고 강력한 구성요소화된 모델을 제공합니다. 우선 플랫폼에는 UI를 구성하는 데 사용할 수 있는 미리 빌드된..
"관심사 분리" View는 UI컨트롤러를 통해 사용자와 상호작용하는 화면 영역이다. ViewModel은 View에 제공되는 데이터를 관리하고, Model과 통신하기 위한 데이터 처리 비즈니스 로직을 수행함 ViewModel은 UI 구성요소를 알지 못하므로 구성변경에 영향을 받지 않음 ViewModel에서 UI 표출관련 데이터객체가 확보되면, View에 알려야하는데, 여기서 LiveData가 사용됨 LiveData는 식별가능한 데이터 홀더입니다. LiveData를 이용하면 해당 데이터를 이용하는 다른 구성요소들은 데이터 변경에 따른 사항들을 관찰할 수 있음. LiveData는 이를 관찰하는 구성요소에 대한 수명주기를 고려하기 때문에 객체 유출, 과도한 메모리 소비를 방지하기 위한 로직을 포함 Reposit..
AdroidManifest.xml에서 각 Activity 마다 launchMode를 설정하여, Activity의 인스턴스를 어떻게 실행시킬 것인지에 대한 지침을 정의함. launchMode - standard : Activity 호출마다 인스턴스를 새롭게 생성 - singleTop : 호출하는 Activity가 Task의 상단에 이미 존재하는 경우, 새로 인스턴스를 생성하지 않고 기존 인스턴스를 사용 - singleTask : Task 내에 Activity의 인스턴스가 하나만 존재하도록 함. ( Ex : MainActivity - Sub1 -> Sub2 일렇게 스택에 쌓여있는데 Sub2에서 MainActivity로 돌아가고 싶으면 새로운 MainActivity 인스턴스를 생성하는 것이 아닌 Sub2와 S..
MIME type은 웹에서도 많이 사용되지만 안드로이드 공부하다가 나왔으므로 ... 안드로이드에서 정리좀 하려고 한다 ... MIME ( Multipurpose Internet Mail Extensions ) -Text가 아닌 데이터나 ASCII가 아닌 문자를 나타내기 위한 방식 -데이터의 "type/fileformat"형식으로 되어 있음 -mime-type은 데이터를 어떻게 play할지 결정하기 위해 사용 ex) audio/mp3, video/avi, application/json, text/html ... 참조 : Android Application 프로그래밍 초급 24강 애플리케이션 컴포넌트 | T아카데미
https://github.com/bufferapp/clean-architecture-components-boilerplate#Architecture bufferapp/clean-architecture-components-boilerplate A fork of our clean architecture boilerplate, this time using the Android Architecture Components - bufferapp/clean-architecture-components-boilerplate github.com 위에서 제시하는 아키텍처를 기반으로 이해한 부분까지 정리하자면 ... User Interface 영역 : 실제 사용자와 가장 밀접한 영역이며, UI 컴포넌트들을 생성하고 이용되어..
MVC 패턴 Model : Data class 또는 Data를 얻어오기 위한 기능을 구현한 class ( 즉, 데이터 처리를 담당하는 클래스 ) View : 사용자와의 interface 를 위한 기능을 구현한 class ( 즉, 사용자에게 어떤 정보를 보여주거나 사용자로부터 입력을 받는 역할 ) Control : View로부터 들어온 사용자 입력을 해석하여 Model을 이용하여 데이털르 처리한 다음 처리 결과를 View에게 전달하여 보여주는 역할을 담당하는 class ( 즉, 어떤 Model이 데이터를 처리할지, 어떤 View를 사용자에게 전달할지를 정하는 역할) OOP (Object Oriented Programming) : 객체지향프로그래밍으로 재사용을 위해 각 기능들을 객체 형태로 분리시켜놓음. M..
애플리케이션 4대 컴포넌트 - 각 컴포넌트는 고유한 기능을 가지고 있음. - 각 컴포넌트는 Intent를 이용하여 메시지 전달가능. - 각 컴포넌트는 독립적으로 실행이 가능함. ( 즉, 특정 컴포넌트를 실행하기 위해 사전에 실행되어야 하는 컴포넌트가 없다는 것 -> Activity : startActivity ... , Service : startService ... , BroadcastReceiver : sendBroadcast ) 1. Activity - 사용자와 인터페이스가 가능한 Window를 하나 가지고 있는 컴포넌트 - 액티비티 구동 시, Window를 하나 생성하고, Window를 통해 사용자에게 보여주고 싶은 View를 보여줌 - 생성된 액티비티들은 스택으로 관리됨 - 액티비티 구동 요청을..
ANR : 애플리케이션의 응답 없음 ( Application Not Responding ) 발생 이유 - 사용자가 애플리케이션의 응답을 바라는 작업을 진행하였을 때, 반응 시간이 약 5초 내로 응답하지 않을 경우 - Foreground 활동이 없을 때, BroadcastReceiver가 상당한 시간 내에 실행을 완료하지 못할 경우 ( BroadcastReceiver 를 구현하는 중에, BroadcastReceiver 내의 로직을 작성하는데 있어서, 시간이 올래걸리는 작업은 Service를 이용해 따로 구현하라는 글을 읽은 적이 있는데.... ANR 때문이라는 것을 이제 알게 되었네.... ㅎㅎ;; ) * 자세한 내용 https://developer.android.com/topic/performance/v..