Android studio web socket - Ошибка при получении нескольких JSON объектов одновременно - PullRequest
0 голосов
/ 01 февраля 2020

Я борюсь с чем-то, что действительно раздражает меня в течение нескольких часов.

Моему android приложению удается подключиться к веб-розетке и получать json данные, которые на данный момент работают отлично, и вот код для этого:

runOnUiThread(new Runnable() {
        @Override
        public void run() {

            mSocket.on("dev0", new Emitter.Listener() {

                @Override
                public void call(Object... args) {
                    try {



                        JSONObject incomingPositionFromSensor = new JSONObject( (String) args[0]);
                        double the_position = incomingPositionFromSensor.getDouble("position");
                        CalculateValue(the_position);



                    } catch (JSONException e) {
                        e.printStackTrace();
                    }



                }
            });

        }

    });

}

Этот код выше, как я уже сказал, работает отлично, и я получаю данные каждый раз. ОДНАКО, ОДНАКО, ОДНАКО: если я пытаюсь одновременно получать 2 json -объекта через этот эмиттер, он не работает !!!!

Вот пример, когда я пытаюсь получить несколько JSON объекты, и ни один из них не работает!

runOnUiThread(new Runnable() {
            @Override
            public void run() {

                mSocket.on("dev0", new Emitter.Listener() {

                    @Override
                    public void call(Object... args) {
                        try {


                            JSONObject incomingTargetFromSensor = new JSONObject( (String) args[0]);
                            int targetNum = incomingTargetFromSensor.getInt("target_number_count");
                            showTargetRep(targetNum); //NOT WORKING!

                            JSONObject incomingPositionFromSensor = new JSONObject( (String) args[0]);
                            double the_position = incomingPositionFromSensor.getDouble("position");
                            CalculateValue(the_position); //NOT WORKING!




                        } catch (JSONException e) {
                            e.printStackTrace();
                        }



                    }
                });

            }

        });

    }

В первом примере я мог получить данные о местоположении, и код точно такой же, как в примере выше, но по некоторым причинам он не может получать данные, когда я попробуйте получить еще один JSON объект.

Еще один пример того, почему мне всегда не нравился JSON объект.

Любая помощь, плз?

1 Ответ

0 голосов
/ 01 февраля 2020

В конце было решено добавить несколько попыток / уловов так:

      runOnUiThread(new Runnable() {
        @Override
        public void run() {

            mSocket.on("dev0", new Emitter.Listener() {

                @Override
                public void call(Object... args) {

                    try {


                        JSONObject incomingTargetRepFromSensor = new JSONObject((String ) args[0]);
                        int target_rep = incomingTargetRepFromSensor.getInt("target_repetition_count");
                        showTargetRep(target_rep);

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }

                    try{
                        JSONObject incomingDataFromSensor = new JSONObject((String ) args[0]);
                        double the_position = incomingDataFromSensor.getDouble("position");
                        CalculateValue(the_position);

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }

                    try{
                        JSONObject incomingTargetSetFromSensor = new JSONObject((String ) args[0]);
                        int target_set = incomingTargetSetFromSensor.getInt("target_set_count");
                        showTargetSet(target_set);

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                    try{
                        JSONObject incomingRepsFromSensor = new JSONObject((String ) args[0]);
                        int the_repetitions = incomingRepsFromSensor.getInt("repetitions");
                        showCurrentReps(the_repetitions);

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }

                    try{
                        JSONObject incomingSetsFromSensor = new JSONObject((String ) args[0]);
                        int the_sets = incomingSetsFromSensor.getInt("sets");
                        showCurrentSets(the_sets);

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }

                }
            });
        }
    });

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...