android同时收到两个httpReader结果

时间:2016-12-27 01:45:58

标签: java android httprequest

我想从在线API获取数据,但这是一个非常多的数据,(从英语翻译1000个单词到给定语言)。

问题是api给了一个" url to long"当我发送超过800个单词时,我想在两个请求中请求数据。

我是否可以同时发送两个HttpReader请求,如果他们想要同时调用setOnResultReadyListener或者是否会丢弃秒结果,它是否会像等待行一样进入?

那么可以一次请求两次,还是应该等到一个完成后再发送下一个请求? (来自api的平均响应时间约为7秒)

我现在的代码:

final ListView listviewTalen = (ListView) (view).getParent();
    final Taal taal = (Taal) listviewTalen.getItemAtPosition(selectedItemPosition);
    view.setBackgroundColor(ContextCompat.getColor(settingsView.getContext(), R.color.DarkGrey));
    List<OpgeslagenWoord> opgeslagenWoorden = db.getOpgeslagenWoordenByTaalId(8);

    // <----------------------------------------------------->
    // <      HTTP REQUEST OM 1000 WOORDEN TE VERTALEN       >
    // <----------------------------------------------------->

    HttpReader httpReader = new HttpReader();

    httpReader.setOnResultReadyListener(new HttpReader.OnResultReadyListener() {
        @Override
        public void resultReady(String result) {
            if (result != null) {
                JsonHelper jsonHelper = new JsonHelper();
                TextHelper textHelper = new TextHelper();
                List<OpgeslagenWoord> opgeslagenWoorden = textHelper.duizendWoordenStringNaarObjecten(jsonHelper.getTranslation(result), (int) taal.getId());
                for (OpgeslagenWoord opgeslagenwoord: opgeslagenWoorden) {
                    db.insertOpgeslagenWoord(opgeslagenwoord);
                }
                Toast.makeText(getActivity(), "The words are saved", Toast.LENGTH_LONG).show();

            } else {
                Toast.makeText(getActivity(), "An error occured", Toast.LENGTH_LONG).show();
            }
            view.setBackgroundColor(ContextCompat.getColor(settingsView.getContext(), R.color.white));
            talen.remove(taal);
            ((ArrayAdapter<Taal>)listviewTalen.getAdapter()).notifyDataSetChanged();
        }
    });

    String httpReaderUrl = "https://translate.yandex.net/api/v1.5/tr.json/translate?key=";
    String alleTalenAlsString = "";
    for (OpgeslagenWoord opgeslagenwoord: opgeslagenWoorden) {
        alleTalenAlsString += opgeslagenwoord.getNaam();
        alleTalenAlsString += " _ ";
    }
    httpReaderUrl += apiKey;
    httpReaderUrl += "&lang=en-";
    httpReaderUrl += taal.getTaalCode();
    httpReaderUrl += "&text=";
    httpReaderUrl += alleTalenAlsString;

    httpReaderUrl = httpReaderUrl.replace(" ", "%20");

    httpReader.execute(httpReaderUrl);

0 个答案:

没有答案