2017-02-13 17 views
0

我正在創建一個使用MVP架構的android應用程序。我創建了Presenter和Interactor類。當應用程序處於後臺並回到前臺時,我正在努力更新UI。如何更新應用程序在後臺收到的回調的UI?

讓我們考慮下面的情況。

單擊用戶界面上的按鈕,並向主講者通知它。演示者要求Interactor從後端提供數據。當Interactor向主持人提供結果時,UI在後臺。如何保存它的狀態並在應用程序處於前臺時更改UI組件。

我試着做以下的事情:

  1. 使用標誌(打開標誌和的onResume檢查調用應該在收到回調調用的方法,但問題是,比方說,如果我有5個不同的服務,可以通過演示具有不同的回調被調用,然後我將需要5面旗幟,我不喜歡它)
  2. 使用Java反射(存儲方法的名稱與參數的HashMap被稱爲)

有沒有更好的wa Ÿ實現這一目標?

+0

訂閱到BehaviorRelay或反應數據庫,它給你,是有關你目前你訂閱了它的初始狀態或未來任何時間顯示的數據的響應變化 – EpicPandaForce

+0

@EpicPandaForce你能分享任何例子? – Rahil2952

回答

0

你可以添加一些「暫停」邏輯在主持人:

  • 每當UI切換到後臺,你告訴主持人,以「暫停」,並保存接收到緩存中的任何數據(可能是就像演示者中的列表一樣簡單)。
  • 無論何時UI回到前臺,您都會告訴您的演示者取消暫停並將其緩存卸載到UI(如果緩存列表不爲空,則會將其推送到UI,就像您的交互者收到的常規響應一樣)
0

作爲名稱MVP建議模型查看演示文稿 模型:模型負責getter setter方法也被稱爲POJO。 視圖:包含具有視圖的活動/片段。 演示者:實際業務邏輯,您可以在其中傳遞網絡調用或與後端數據庫(如SQLite/MySql)相關聯。

當按鈕單擊時,您需要呼叫演示者,演示者在演示完成後執行後臺任務,您需要通過視圖通知您的視圖,響應是通過接口幫助完成的CallBacks的成功/失敗。

例子:

interface BaseContract { 
     interface BaseView { 
      //Methods for View 
      void onDoSomething(); 
     } 

     interface BasePresenter { 
      void doSomething(); 

     } 
    } 

    class BaseMainPresenter implements BaseContract.BasePresenter { 
     BaseContract.BaseView view; 

     BaseMainPresenter(BaseContract.BaseView view) { 
      this.view = view; 
     } 

     @Override 
     public void doSomething() { 
      if (view != null) 
       view.onDoSomething(); 
     } 
    } 

    class DemoClass implements BaseContract.BaseView { 

     //Create object of Presenter 

     /**** 
     * Example : 
     * BaseMainPresenter baseMainPresenter = new BaseMainPresenter(this); 
     */ 
     @Override 
     public void onDoSomething() { 
      //Deal with Context here. 
     } 
    } 
相關問題