SLEEP - часть II

Наш метод H(), который и запускает отправку данных с частотой в 1 секунду, вызывается в этом же классе:

Пробуем найти где вызывается метод - родитель с помощью jadx:

private void a(JSONObject jSONObject) throws JSONException {
        char c2;
        String string = jSONObject.getString("type");
        char c3 = 1;
        if (!jSONObject.isNull("status")) {
            String string2 = jSONObject.getString("status");
            if (string2.equals("success")) {
                int hashCode = string.hashCode();
                if (hashCode != -1367724422) {
                    if (hashCode == -400605837 && string.equals("point_b")) {
                        c2 = 0;
                        switch (c2) {
                            case 0:
                                C();
                                break;
                            case 1:
                                break;
                            default:
                                int hashCode2 = string.hashCode();
                                if (hashCode2 != -1408204561) {
                                    if (hashCode2 == -400605838) {
                                        break;
                                    }
                                } else if (string.equals("assign")) {
                                    c3 = 0;
                                    switch (c3) {
                                        case 0:
                                            this.g.b();
                                            break;
                                        case 1:
                                            this.g.c();
                                            break;
                                    }
                                    this.g.e();
                                    new Thread(new Runnable() {
                                        public final void run() {
                                            b.this.H();
                                        }
                                    }).start();
                                    return;
                                }
                                c3 = 65535;
                                switch (c3) {
                                    case 0:
                                        break;
                                    case 1:
                                        break;
                                }
                                this.g.e();
                                new Thread(new Runnable() {
                                    public final void run() {
                                        b.this.H();
                                    }
                                }).start();
                                return;
                        }
                        c.a().c(this.h);
                        E();
                        return;
                    }
                } else if (string.equals("cancel")) {
                    c2 = 1;
                    switch (c2) {
                        case 0:
                            break;
                        case 1:
                            break;
                    }
                    c.a().c(this.h);
                    E();
                    return;
                }
                c2 = 65535;
                switch (c2) {
                    case 0:
                        break;
                    case 1:
                        break;
                }
                c.a().c(this.h);
                E();
                return;
            }
            b(string2);
        } else if (this.j <= 25) {
            this.f2787b.c(this.h, string);
            this.j++;
        } else {
            this.f2787b.b(this.h, "state");
        }
    }

упрощенно попробую обьяснить, что тут происходит:

  • С сервера приходит объект с данными (тип)
  • Из этого объекта вычленяется информация
  • Информация бывает 3-х видов:
    • Статус выполнения заказа
      1. Если заказ взят (параметр "success" (успешно))
      2. Передается координаты точки "Б", т.е того места, куда необходимо приехать
      3. Появляется кнопка "На месте", к ней присваивается слушатель нажатия и т.д.
      4. Заканчивается инициализация заказа (убираются всплывающие окна и т.д.)
      5. Вызывается метод H(), который каждую секунду отправляет данные о твоей геопозиции
    • Заказ отменен
      1. Отправляется информация о времени, потраченном на заказ
      2. Заканчивается инициализация (убираются всплывающие окна и т.д.)
    • Ошибка заказа (водитель заблокирован/достигнут лимит заказов/заказ уже взят/и т.д)