Mortar
jonghokim
2014.12.11
Why Mortar
- View 에서 사용하는 모듈들이 Dagger 에 의해 Inject 된 후에 View 가 소멸 되어도 모듈들을 제거 되지 않고 메모리에 남아 있다.
- 프로세스가 죽은걸 살리기 위해서 activity's persistence bundle 을 관리하기 어렵다.
MorTar Structure
Application
Mortar.java
DateApplication.java
RootScope
What is the RealScope?
ObjectGraph 를 가진 Tree 구조 (ObjectGraph - Dagger 참조)
RealScope.java
Activity
BaseActivity.java
RootScope
ActivityScope
how to create activitscope?
Mortar.java
RealScope.java
BluePrint 는 무엇인가?
bluprint
Blueprint.java (Interface)
HomeBlueprint.java
Blueprint 는 단순히 모듈을 들고 있는 청사진
Scope 에서 ObjectGraph 를 생성할 때 어떤 모듈을 이용해서 만들지 설정해놓는다.
RealActivityScope#onCreate()
RealActivityScope.java
doLoding() ? 뒤에서 자세히
Fragment Hell
http://corner.squareup.com/2014/10/advocating-against-android-fragments.html
Activity + CustomView 구조!
Custom View
HomeView.java (BaseActivity 에 붙어있다.)
RootScope
ActivityScope
ViewScope
how to Make ViewScope?
RealActivityScope.java (RealScope.java 와 다르다. RealActivityScope가 RealScope 상속한다.)
RootScope
ActivityScope
ViewScope
ViewScope
ViewScope
Activity Scope 에 ViewScope 를 붙여서 확장가능
ActivityScope
ViewScope
ViewScope
ViewScope
Destroy Scope
BaseActivity.java
RealScope.java
Application 의 ObjectGraph 가 모든 Module 을 들고 있어서 메모리 차지하는 문제를 해결 !
MVP
HomeView.java
Presenter
HomeBluePrint.java
Presenter#takeview(1)
Presenter.java
PRESENTER#TAKEVIEW(2)
RealActivityScope.java
Presenter#takeview(3)
RealActivityScope.java
Presenter#dropview
Presenter.java
How To save state?
RealActivityScope.java
View마다 Presenter 가 있고, Presenter 에 Bundler 이 있고 Bundler 은 Activity lifecycle 에 맞게 호출 된다. -> onSaveInstanceState() 와 restore 을 View 별로 관리하기 쉬워진다.
state 복구할 때 는 onCreate(savedInstance) 에서 parameter 로 넘어온 savedInstance 를 저장해두고 나중에 Presenter#takeview() 에서 이용한다.
Mortar
By JongHo Kim