簡體   English   中英

有關Android應用的MVP模式的問題

[英]Questions on MVP Pattern for Android apps

我已經開發了android應用幾年了。 最近,我在應用中使用了MVP架構,並通讀了很多內容並利用了Android10 github存儲庫。

但是我對這種MVP架構幾乎沒有疑問。 請幫助我更好地理解這些。

1)所以我有三個模塊的應用程序,域,數據。 哪個模塊演示者將參加。 在某些應用程序中,它們在域中具有它,但是我看到其他一些庫在演示文稿或應用程序模塊中具有此https://github.com/android10/Android-CleanArchitecture

2)演示者可以擁有與Android有關的東西,例如Intent,Contexts,SharedPrefs ets嗎? 我認為這不會發生。

3)數據模塊可以與應用程序模塊通信,反之亦然?或者應用程序模塊應該與域模塊通信,該域模塊將在數據模塊上執行事務

4)我該如何使用MVP架構進行類似於Facebook的社交登錄?有什么想法或鏈接可以解釋嗎? 我以下面的方式做到了:

活動: onFBButtonClick() -> presenter.onButtonClick() -> FacebookLoginManager.registerCallback

之后,我直接在onActivityResult(int requestcode, int resultcode, Intent intent)上獲得我的活動的回調。 現在根據fb sdk教程,我必須調用FbCallbackManager.onActivityResult(with all the params) 但是我無法在演示者中傳遞這些信息,因為演示者不應該了解意圖(特定於平台)的內容。 我現在如何調用FbcallbackManager.onActivity()

在Android中有多種實現MVP的方法。

我見過的大多數方法都將“活動/片段”指定為MVP視圖。 最初看起來很自然,但是當您嘗試將此方案應用到非平凡的應用程序時,會出現很多問題。

在研究了許多MVP方法(包括您鏈接的方法)之后,我得出一個結論,即“活動無片段”都不應該是MVC視圖。

此處總結了此主張背后的詳細原因: 為什么活動不是UI元素

根據這一觀點,我提出了針對Android應用程序的MVP的另一種實現:Android中的MVP和MVC體系結構

至於您的問題:

  1. 主持人是“屏幕”的一部分
  2. 取決於您選擇哪種MVP方法。 我個人認為演示者是活動和片段,因此他們可以依賴於Android的組件。
  3. 我認為只有git repo的作者才能回答這個問題。
  4. 如果您采用“活動/片段作為演示者”的思維方式,您將立即了解如何做到這一點而不會污染MVP視圖。

另外,關於FB集成,請在此處查看我的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM