Выполнить задачу Asyn c Внутри другой задачи Asyn c - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь вызвать другую асинхронную задачу c внутри OnPostExecute. Второе задание не запускается вообще, кажется. Я не могу распечатать что-либо изнутри в журналы.

@Override
protected void onPostExecute(String result) {
        super.onPostExecute(result);

        try {
            JSONObject json = new JSONObject(result);
            JSONArray lignes = json.getJSONArray("lignes");
            populatelist(lignes);
        }
        catch (JSONException e) {

        }
    }
}

Функция populatelist заполняет массив. Внутри этой функции я пытаюсь вызвать вторую асинхронную задачу c, чтобы получить значения, основанные на этом списке.

 protected void populatelist(JSONArray lignes){
    try {
        for(int i=0;i<lignes.length(); i++) {
            JSONObject jsonas = lignes.getJSONObject(i);
            String fdesignation = jsonas.getString("designation");
            String fqtecde = jsonas.getString("qtecde");
            String fcode_produit = jsonas.getString("code");
            InfoStock(fcode_produit);
            items.add(new PickingListProduitItem(fdesignation,"",fqtecde, ""));

        }
    }
    catch(Exception e){

    }
}

InfoStock () - это функция, которая используется для возврата дополнительных данных из веб-службы.

 protected void InfoStock(String code_produit){
    String stockURL = "http://" + mSharedPreferences.getString(Constants.SERVER_IP,"")+"//rest/v2/produit/info/code/"+ code_produit + "?stock=true";
    try {
        if (mDownloader != null && mDownloader.getStatus() == AsyncTask.Status.RUNNING) {
            mDownloader.cancel(true);
            mPDialog.dismiss();
        }
        mPDialog = new ProgressDialog(getApplicationContext());
        mDownloader = new XMLDownloader(getApplicationContext(),mPDialog);
        byte[][] downloadResults = mDownloader.execute(stockURL).get();

        // Read stock info.
        String s = new String(downloadResults[0], StandardCharsets.UTF_8);
        JSONObject resp = new JSONObject(s);
        PrixStockJSONParser psj = new PrixStockJSONParser(resp);
        mRepInfoStock = psj.getRepInfoStock();
        mRepInfoPrix = psj.getRepInfoPrix();


    } catch (Exception ex) {

    }
}

Я пытаюсь установить значение в массиве <>, созданном методом OnPostExecute. Однако error message нет, а массив не заполнен вообще. Даже если я пытаюсь распечатать журнал из функции InfoStock, он ничего не делает.

Любые предложения приветствуются.

...