Множественное соединение между Android и php

У меня есть динамическая таблица в базе данных, и каждый раз, когда появляется новая вставка, мне нужно делать некоторые вычисления и отправлять данные на Android, поэтому я знаю, как установить связь между Android и php, но как я могу заставить Android сделать несколько проверить файл php, чтобы он мог отображать данные?

 private void loadProducts() {

    StringRequest stringRequest = new StringRequest(Request.Method.GET, URL_PRODUCTS,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        // converting the string to json array object
                        JSONArray products = new JSONArray(response);

                        // traversing through all the object
                        for (int i = 0; i < products.length(); i++) {

                            // getting product object from json array
      JSONObject productObject = products.getJSONObject(i);
               int Temp_dt = productObject.getInt("Temp_dt");
                 int BusNumber = productObject.getInt("BusNumber");
                    Product product = new Product(Temp_dt, BusNumber);

                            // adding the product to product list
                            productList.add(product);
                        }

      adapter = new ProductsAdapter(WaitingActivity.this, productList);
                        recyclerView.setAdapter(adapter);
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) { Toast.makeText(WaitingActivity.this, error.getMessage(), Toast.LENGTH_SHORT).show();
                }
            });

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

Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Что нового в PHP 8.1?
Что нового в PHP 8.1?
Если вы все еще используете PHP 7, то эта статья для вас. В PHP 8, а именно в PHP 8.1, встроены некоторые очень востребованные функции, которые вам...
Разработка LMS на заказ для повышения эффективности работы и обучения
Разработка LMS на заказ для повышения эффективности работы и обучения
За последние годы в образовании произошла большая революция, и сегодня почти все учебные заведения делают упор на эксклюзивное управление учебным...
0
0
28
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Невозможно заставить сервер отправлять данные без запроса от клиента. Вы должны проверять изменения на Android каждые N секунд. Я думаю, вы не хотите каждый раз отправлять полную таблицу, поэтому вы можете создать поле в базе данных, содержащее время последнего обновления таблицы. Он может быть изменен с помощью триггера. Когда вы загружаете таблицу в первый раз, вы сохраняете это время на Android. Теперь вы получаете это время с сервера каждые N секунд и если оно отличается от сохраненного - перезагружаете таблицу.

Или используйте сокеты, но они не поддерживаются в php, вам нужно другое серверное приложение

Могу ли я просто обновить активность Android из фонового потока? потому что мне просто нужно сделать несколько подключений к URL_PRODUCTS, и он отправит данные, которые мне нужны. Как вы думаете, этот учебник поможет в этом случае? cogitolearning.co.uk/2013/06/…

Alin lee 23.05.2019 02:05
Ответ принят как подходящий

То, что вы ищете, - это в основном обновление в реальном времени на стороне Android (или на стороне клиента) от MySQL. Я думаю, у вас есть эти варианты.

Продолжайте проверять изменения каждые n секунд

Я думаю, что это не очень хорошее решение. Потому что вы бесполезно проверяете изменения данных и выполняете сетевые операции с фиксированным интервалом.

timer.scheduleAtFixedRate(yourtask,delay,interval)

Используйте push-уведомления

Это лучше, так как всякий раз, когда в ваших данных происходят какие-либо изменения, отправьте push-уведомление на сторону клиента, чтобы внести соответствующие изменения.

Вы можете ознакомиться с полным учебным пособием по уведомлениям здесь:Уведомление AndroidУчебник

Использовать базу данных Firebase в реальном времени

Самое простое решение — использовать базу данных Firebase Realtime или базу данных FireStore. Если у вас нет проблем с переходом на базу данных NoSQL, это может быть лучшим решением для вас.

Другие вопросы по теме