2017-05-04 71 views
0

我正在開發一個允許從多個webservice(JSON)同時獲取數據的片段。讓我們用這個形象想象: demo imageAndroid - 在同一時間段從多個webservice(JSON)獲取數據

  • 請求數據(此方法將調用下載JSON的功能和發送通過回調監聽響應
> @Override 
    public void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     BaseDataReponsitory baseDataReponsitory = new BaseDataReponsitory(); 
     baseDataReponsitory.getDataFromURL(url1, this); 
     baseDataReponsitory.getDataFromURL(url2, this); 
    } 
  • 接收數據:
@Override 
    public void loadListFromURLFinish(String json) { 
     ListEntity listEntity = gson.fromJson(json, ListEntity.class); 
     mList.addAll(listEntity.getEntityList()); 
     Log.d(TAG, "loadListFromURLFinish: " + mList.size()); 
    } 

數據日誌是4和9。它是正確的(JSON 1有4個元素,JSON 2有9個元素)。 我的問題是我如何拆分數據來設置視圖(見上圖)?

回答

0

您可能需要在回叫中添加輔助參數來區分呼叫,例如,

public static final int CODE_1 = 1; 
public static final int CODE_2 = 2; 
@Override 
    public void loadListFromURLFinish(String json, int requestCode) { 
     if(requestCode == CODE_1) // do stuff 
     else if(requestCode == CODE_2) // do other stuff 
    } 

而你也這樣稱呼它

@Override 
    public void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     BaseDataReponsitory baseDataReponsitory = new BaseDataReponsitory(); 
     baseDataReponsitory.getDataFromURL(url1, this, CODE_1); 
     baseDataReponsitory.getDataFromURL(url2, this, CODE_2); 
    } 

當你調用回調你通過CODE_X變量,它使您可以區分。

+0

感謝您的解決方案,我會嘗試。我有另一個關於這個問題。接收數據時是否需要使用異步任務?我發現數據日誌在我看到它之前幾秒鐘就會延遲。 –

+0

@Brascelok你不一定需要'AsyncTask',但你必須在'非ui-thread'和'AsyncTask'上做任何網絡調用。 –

+0

下載json字符串時,我已經在函數baseDataReponsitory.getDataFromURL上使用了AsyncTask。 –