Android Asynctask устарел. Нужны заменяющие примеры - PullRequest
1 голос
/ 18 июня 2020

Здравствуйте, я новичок в Android Java, и я был бы очень признателен за это. Я могу получить некоторые ссылки и / или примеры для выполнения простых сетевых вызовов без использования AsyncTask.

Я делаю программа для синтаксического анализа простого JSON объекта из URL.

В Android 11 (API 30) все AsyncTask будут устаревшими, как показано здесь:

https://developer.android.com/reference/android/os/AsyncTask

1 Ответ

1 голос
/ 18 июня 2020

Это пример того, как отправить запрос без AsyncTask, используя Thread

  void send_request(final String url) {
    try {
        Thread thread = new Thread() {
            public void run() {
                Looper.prepare();
                final JSONObject[] maindata = {new JSONObject()};

                final Handler handler = new Handler();
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        String data = "";
                        String error_data = "";

                        HttpURLConnection httpURLConnection = null;
                        try {

                            httpURLConnection = (HttpURLConnection) new URL(url).openConnection();
                            httpURLConnection.setRequestMethod("GET");
                            httpURLConnection.setRequestProperty("Content-Type", "application/json");






                            int status = httpURLConnection.getResponseCode();
                            Log.d("GET RX", " status=> " + status);

                            try {
                                InputStream in = httpURLConnection.getInputStream();
                                InputStreamReader inputStreamReader = new InputStreamReader(in);

                                int inputStreamData = inputStreamReader.read();
                                while (inputStreamData != -1) {
                                    char current = (char) inputStreamData;
                                    inputStreamData = inputStreamReader.read();
                                    data += current;
                                }
                                Log.d("GET RX =>", " " + data);

                                sdbw sd = new sdbw(act);
                                maindata[0] = new JSONObject(data);



                            } catch (Exception exx) {
                                InputStream error = httpURLConnection.getErrorStream();
                                InputStreamReader inputStreamReader2 = new InputStreamReader(error);

                                int inputStreamData2 = inputStreamReader2.read();
                                while (inputStreamData2 != -1) {
                                    char current = (char) inputStreamData2;
                                    inputStreamData2 = inputStreamReader2.read();
                                    error_data += current;
                                }
                                Log.e("TX", "error => " + error_data);

                            }


                        } catch (Exception e) {
                            Log.e("TX", " error => " + e.getMessage());
                            e.printStackTrace();
                        } finally {
                            if (httpURLConnection != null) {
                                httpURLConnection.disconnect();
                            }
                        }

                        handler.removeCallbacks(this);
                        Looper.myLooper().quit();
                    }
                }, 2000);

                Looper.loop();
            }
        };
        thread.start();

     } catch (Exception ex) {
        Log.e("ERROR =>", "" + ex.getMessage());
        ex.printStackTrace();
    }

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