MVP 패턴에서 startActivity는 어디서 해야하나요
조회수 2888회
안녕하세요 안드로이드 개발을 해보면서 mvp 패턴을 공부중에 있습니다.
개발을 하던 도중 startactivity 함수를 호출해서 새로운 액티비티를 띄워줘야하는데 이코드는 어디로 들어가야하나요?
음.. 뷰의 처리니까 View(Activity)에 들어가는게 맞는 것 같으면서도 뭔가 처리를 하는 거니까 Presenter에서 하는 것 같기도하고....
굳이 Presenter로 넘길 필요가 있나? 싶지만 Activity에서 하자니 데이터를 인텐트로 넘겨야 될 경우 어차피 presenter를 통해서 데이터를 또 가져와야하고....
생각해보면 이건 개발 하는 사람에 따른 코딩 스타일 일수도 있습니다만 현재 MVP를 많이 개발 해보신 분들은 어디에 넣는지 궁금하여 질문 올려보아요!
괜찮으시다면 그 이유도...ㅎ 부탁드립니다!
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
개인적으로 startActivity()의 경우는 V에 넣는 것이 MVP에 좀 더 적합하지 않나 싶습니다.(프래그먼트 또는 다이얼로그를 띄우는 처리까지 생각해 본다면) 그리고 인텐트 파리미터로 사용할 데이터의 경우는 P에서 V로 전달하면 되니까 특별히 문제가 될 것 같지는 않을 것 같고요.
MVP를 구현하는데 있어서 testability를 중요하게 생각한다면 Presenter 레이어를 안드로이드 프레임워크와 완전히 분리된 구조로 만들 수도 또한 그렇지 않게 구현할 수도 있습니다. 따라서 어떤 관점을 갖고 구현하느냐에 따라 사실상 케바케가 될 수 있습니다. 아래의 사례들만 봐도 사용하는 방식이 다양한 것을 알 수 있고요. 현재 작성 중인 코드에서 여기도 넣어보고 저기도 넣어보면서 어떤게 좀 더 나은지 스스로 판단해보는 것도 의미가 있을 것 같습니다.
todo-mvp의 경우 액티비티에서 startActivity 바로 실행
MvpCleanArchitecture의 경우 액티비티에서 startAcitivty 바로 실행 및 프래그먼트 트랜잭션 실행
- https://github.com/glomadrian/MvpCleanArchitecture/blob/master/app/src/main/java/com/github/glomadrian/mvpcleanarchitecture/ui/activity/MainActivity.java
- https://github.com/glomadrian/MvpCleanArchitecture/blob/master/app/src/main/java/com/github/glomadrian/mvpcleanarchitecture/ui/activity/ModelInfoActivity.java#L35
u2020-mvp의 경우 Presenter에서 실행, ScreenSwitcher에게 위임
android-mvp의 경우, Presenter에서 실행
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력