2

語境Android的MVP與EventBus和啓動的服務

我寫了一個Android App播放單個媒體文件,顯示在活動它的歌詞。 「活動」屏幕還具有「播放暫停」切換按鈕和一個使用拖動進行前進/後退的搜索欄。活動在其onCreate()方法中啓動Started Service。

我正在嘗試將應用確認爲MVP設計模式。我正在尋找示例代碼作爲適合這種情況的指導。非常感謝您的幫助。

事情,我渴望學習

  1. 如果像我這樣的地方活動和啓動的服務使用EventBus具有雙向通信,其中確實爲EventBus聽衆謊言中的代碼? Presenter在這方面沒有任何作用?
  2. 代碼如何測試EventBus相關代碼 - 單元和集成測試?
  3. 活動中有哪些代碼?什麼在服務?演示者與活動和服務的合同是什麼樣子?最後,這位演示者的實現過程如何?
  4. 如何在MVP的情況下管理MenuOptions點擊事件的代碼?

如果有詳細的解釋會對您有所幫助,那麼對Github/Bitbucket中現有代碼庫的任何引用都會很感激。提前致謝。

回答

1

我個人不會用EventBus實現這個。無論如何,這是我對你的問題的回答。

  1. 如果像我這樣的地方活動和啓動的服務使用EventBus具有雙向通信,在哪裏呢代碼爲 EventBus聽衆在於? Presenter在這方面沒有任何作用?

是,主持人註冊到EventBus偵聽傳入的事件,並告訴要顯示的視圖。反過來說,如果用戶點擊播放/暫停按鈕,這個事件通過Presenter傳遞給你的服務(也許通過EventBus,也許通過傳遞給服務的Android意圖,無論如何......但傳遞這個事件,即通過Presenter中發生事件總線)。所以Activity不直接與服務通信。它是視圖(活動)的主持人,在視圖(活動)和回放服務之間進行調解。

  • 如何的代碼相關的代碼EventBus測試 - 兩個單元和集成測試?
  • 您不必測試EventBus本身。它已經由圖書館的作者進行過測試。因此,將EventBus作爲構造函數參數傳遞給演示者,在單元測試期間,您可以將Mocked EventBus傳遞給演示者,以檢查演示者是否正確註冊/取消註冊,並且可以啓動一些事件以查看演示者是否正確地處理了演示者並且調用視圖上的預期方法(模擬視圖),反之亦然,以便將事件(如播放/暫停)發送到服務。

    1. Activity中有什麼代碼?什麼在服務?演示者與活動和服務的合同是什麼樣子?最後,這位演示者的實現過程如何?

    查看答案1.活動僅顯示UI小部件。轉發點擊事件給演示者。演示者與服務通信(例如通過EventBus)。反過來:如果你的服務改變了狀態(如到達的音軌結束),那麼它將通知演示者(即低谷EventBus)音頻播放已完成,演示者告訴視圖相應地顯示UI。

    1. 如何在MVP的情況下管理MenuOptions點擊事件的代碼?

    ,彷彿是要你的業務邏輯(即播放/暫停)是「匯」的狀態,從您的視圖(活動)通過你的主講人換下來的企業在1和3所描述邏輯(即回放服務)。

    +0

    非常感謝你。我沒有將Qn.2框架化,但我也從你的答案中得到了期望。當我結束了像你所建議的那樣的實施時,聽到像你這樣的經驗豐富的人的感受真是太棒了。再次感謝! – karthiks