정의

요청/의도 Intent(Event)

목적 및 특징

**상태 문제**와 부수 효과를 줄이기 위해 Intent의 발생에 따라 단방향, 순환의 데이터 흐름을 가지는 디자인 패턴

Model

앱의 유일한 상태와 데이터를 가지고 있는 불변 객체.

Side Effect

주로 상대적으로 시간이 많이 걸리는 Background 작업들, API 통신, I/O 작업, Activity 화면의 전환 등

이러한 Intent가 들어오게 되면 Model로 값을 전달함과 동시에 Side Effect에도 값을 전달하여 해당하는 작업을 실행

해당 작업이 끝나게 되면,

상태 문제

프로그래밍은 상태 제어와 깊은 연관성이 있습니다. 화면에 나타나는 모든 정보, 프로그래스바 상태, 버튼 활성화 등 무수한 상태들로 구성되어 있습니다. 하지만 상태를 관리하기 힘들어지고 의도하지 않은 방향으로 제어가 된다면, 우리는 이것을 상태 문제라고 합니다.

Untitled

Pure cycle

MVI에서 상태는 불변합니다. 그렇기 때문에 View를 업데이트하기 위해서는 **intent**를 사용해 이벤트를 발생시키고, 이벤트에 따라 새로운 상태를 생성해 적용하게 됩니다.

한 마디로 이벤트가 상태를 변경하기 위한 유일한 방법이다.

Untitled