Создать очередь для отправки данных на сервер PHP с Android - PullRequest
0 голосов
/ 23 ноября 2018

Там я получаю данные из SQLite и отправляю их на сервер с помощью Volley.сейчас я отправляю все данные за раз.Я просто хочу знать, как я могу создать очередь, которая сначала получает данные одного транспортного средства, получает его ответ, а затем отправляет другое.

cursor=helperClass.readAllData();
                if (cursor!=null)
                {
                    while (cursor.moveToNext())
                    {
                        modelClass=new ModelClass(cursor.getInt(0),cursor.getString(1),
                                cursor.getString(2),cursor.getString(3),
                                cursor.getString(4),cursor.getString(5));
                                modelClasses.add(modelClass);
                    }

                    sizeOfArray=modelClasses.size();

                    for (int i=0; i<sizeOfArray;i++)
                    {
                        name = modelClasses.get(i).getName();
                        model=modelClasses.get(i).getModelName();
                        number=modelClasses.get(i).getEngineNumber();
                        image=modelClasses.get(i).getImageBase64();
                        hdimage=modelClasses.get(i).getHdimageBase64();
                        uploadData(name, model, number, image, hdimage);
                        Toast.makeText(UploadDataServiceClass.this, String.valueOf(sizeOfArray), Toast.LENGTH_SHORT).show();
                        Toast.makeText(UploadDataServiceClass.this, String.valueOf(i), Toast.LENGTH_SHORT).show();
                    }

                }

uploadData (имя, модель, номер, изображение, изображение))

        RequestQueue requestQueue=Volley.newRequestQueue(UploadDataServiceClass.this);
    StringRequest stringRequest=new StringRequest(Request.Method.POST, showURL, new Response.Listener<String>()
    {
        @Override
        public void onResponse(String response)
        {
            try
            {
                Log.d(TAG, "onResponse: " + response);
                JSONObject jsonObject = new JSONObject(response);

            }
            catch (JSONException e)
            {
                e.printStackTrace();                   
            }
        }
    }, new Response.ErrorListener()
    {
        @Override
        public void onErrorResponse(VolleyError error)
        {   }
    }
    )
    {
        @Override
        protected Map<String, String> getParams()
        {
            Map<String, String> parameters = new HashMap<String, String>();
            parameters.put("name", name);
            parameters.put("model", model);
            parameters.put("number", number);
            parameters.put("image", image);
            parameters.put("hdimage", hdimage);
            parameters.put("crud_type", "insert");
            return parameters;
        }
    };
    requestQueue.add(stringRequest);

1 Ответ

0 голосов
/ 23 ноября 2018

Вам нужна Служба Исполнителя с singleThreadExecutor , чтобы выполнять ваши потоки один за другим


Создает Исполнителякоторый использует один рабочий поток, работающий из неограниченной очереди.(Тем не менее, обратите внимание, что если этот единственный поток завершается из-за сбоя во время выполнения до завершения работы, то при необходимости для выполнения последующих задач его место занимает новый.) Задачи гарантированно выполняются последовательно, и не более одной задачи будет активнойв любой момент времени.В отличие от эквивалентного newFixedThreadPool (1) возвращаемый исполнитель гарантированно не реконфигурируется для использования дополнительных потоков.


но что такое Executor Service?ThreadPool And Executor Service


с помощью службы Executor вы можете установить максимальное количество выполняемых задач (1 в вашем случае)


здесь простые уроки о ThreadPool, исполнителях и будущем

...