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