2017-05-04 63 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。 –