Замена AsyncTask в Android Java
Занимаюсь разработкой мобильного приложения для Android среда работы - Android Studio (Java). Мобильное приложение обращается к PHP скриптам, посредством HttpURLConnection GET & POST. Уже скрипты PHP работают с MySQL базой и возвращают JSON данные. Для операций в фоновом потоке использую AsyncTask. Но, обратил внимание, что Android Studio помечает AsyncTask как устаревший метод.
Вопрос. Чем заменить AsyncTask для HTTP GET & POST запросов на сервер.
Решения я нашёл на: https://stackoverflow.com/questions/58767733/android-asynctask-api-deprecating-in-android-11-what-are-the-alternatives
Предлагается использовать:
ExecutorService executor = Executors.newSingleThreadExecutor();
Handler handler = new Handler(Looper.getMainLooper());
executor.execute(new Runnable() {
@Override
public void run() {
//Background work here
handler.post(new Runnable() {
@Override
public void run() {
//UI Thread work here
}
});
}
});
Но как при такой реализации получать результат запроса и правильно апеллировать им?
Моя прежняя реализация для полного представления.
Пример AsyncTask
//region Class AsyncTask's
private class getVersionAppData extends AsyncTask<String, Void, String>
{
@Override
protected void onPreExecute()
{
super.onPreExecute();
}
@Override
protected String doInBackground(String... strings)
{
Log.i("AppLog", "LoadingDataFragment - HTTP GET (send): " + strings[0]);
String result = null;
result = workingHTTP.perfomGetCall(strings[0]);
return result;
}
@Override
protected void onPostExecute(String result)
{
super.onPostExecute(result);
Log.w("AppLog", "LoadingDataFragment - HTTP GET (receive): " + result);
Gson gs = new Gson();
try
{
DataLoadingResult(gs.fromJson(result, VersionApp.class));
} catch (JsonSyntaxException e) {
//TO-DO Json error
workingAlertDialog.ShowError(e.getMessage(), () -> getActivity().finish());
}
}
}
//endregion class AsyncTask
Дополнительно. WorkingHTTP.perfomGetCall(String url).
public String perfomGetCall(String requestURL)
{
URL url;
HttpURLConnection urlConnection = null;
String result = null;
try {
url = new URL(requestURL);
urlConnection = (HttpURLConnection) url.openConnection();
int responseCode = urlConnection.getResponseCode();
if(responseCode == HttpURLConnection.HTTP_OK)
{
result = readStream(urlConnection.getInputStream());
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
public String readStream(InputStream in)
{
BufferedReader reader = null;
StringBuffer response = new StringBuffer();
try {
reader = new BufferedReader(new InputStreamReader(in));
String line = "";
while ((line = reader.readLine()) != null) {
response.append(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return response.toString();
}
Спасибо всем!