지금까지는 하나의 컴포넌트만 사용하였다. 하지만, 안드로이드 프레임워크 같은 곳에서는 여러 컴포넌트들 간에 의존 관계가 필수적이다. 어플리케이션은 여러 액티비티(Activity)를 포함하며, 각 액티비티는 여러 프레그먼트(Fragment)를 포함할 수 있다. 즉, 각 Component들은 의존 관계가 생긴다. 따라서 의존 관계가 있는 컴포넌트는 상위 컴포넌트에 대한 참조를 포함해야 한다. Dagger2에서는 이를 위해 모듈에 포함할 수 있고, 상위 프로바이더를 사용할 수 있는 서프컴포넌트를 제공한다. 서브 컴포넌트(SubComponent) 서브 컴포넌트란 어떤 컴포넌트의 하위에 포함되는 컴포넌트를 뜻한다. 정확히는 모듈 내부에 포함되는데, 이를 통해 해당 서브컴포넌트는 부모 모듈과 컴포넌트의 프로바이더를..
Activity
목표 ViewModel이 만들어진 이유를 이해한다. ViewModel이 필요한 이유 Android는 모바일 OS 특성상 리소스에 대한 제약이 많은 OS이다. 모바일 OS에서는 리소스를 제거해야만 하게 만드는 제어될 수 없는 이벤트가 발생하게 되는데, Android 프레임워크는 이러한 이벤트가 발생했을 때 Activity와 Fragment 같은 UI 컨트롤러에 대한 제거와 복구를 수행한다. 예를 들어 화면 회전이 이루어진다고 하자. 화면 회전이 이루어지게 되면 Activity가 파괴(onDestroy)된 다음 다시 화면이 만들어지면서(onStart) 복구 로직이(onRestoreInstanceState) 수행된다. Lifecycle에 관한 내용을 모른다면 아래(kotlinworld.com/46) 글을 참조..
목표 Activity의 Lifecycle에 대해 이해한다. 각 수명주기에 해당하는 메서드가 언제 호출되는지 알아야 한다. 개요 안드로이드의 리소스 제한으로 인해 Activity는 항상 살아있지 못한다. Activity는 Activity가 보여주는 화면(View)이 화면 상에서 뒤로 가거나, 화면 상에서 사라지게 될 경우 특정한 메서드를 호출하게 되는데, Activity의 Lifecycle은 Activity가 각 상황에서 어떤 메서드를 호출하는지를 알려준다. Activity Lifecycle onCreate() Activity가 시작될 때 불림 onStart() Activity가 보이기 전에 불림 Broadcast Receiver은 여기서 등록한다. onResume() Activity 일부가 보일 때 불림..
목표 Context란 무엇인지 이해한다. ApplicationContext와 ActivityContext의 차이에 대해 이해한다. 적절한 곳에 context를 사용할 수 있도록 한다. Context Context란 추상 클래스로, Application environment의 global한 정보에 접근하기 위한 인터페이스이다. Application environment의 global한 정보란 Application의 resource(getPackage(), getResource())나 Android 시스템에서 제공하는 API(startActivity(), startService(), getSystemService())에 대한 정보를 뜻한다. 구현은 안드로이드 시스템에 의해 제공되며, 앱 개발자가 직접 구현할..