Модернизация заморозить пользовательский интерфейс - PullRequest
0 голосов
/ 23 октября 2018

Я использую AsyncTask для преобразования моего растрового изображения в строку base64.После этого в пост-выполнении asyncTask я пытаюсь загрузить эту строку base64 на сервер, используя модификацию.

Но мое приложение зависает, когда я делаю запрос на модификацию.

Вот мой код:

  public class ConvertBitmapToString extends AsyncTask<String, String, String> {

    @Override
    protected String doInBackground(String... params) {
        String base64String = FrequentFunctions.convertBitmapToBase64(singleBitmapDetail.getBitMap());
        return base64String;
    }


    @Override
    protected void onPostExecute(final String result) {
        hideProgressBar();
        hitInsertImageApi(result);
    }

    @Override
    protected void onPreExecute() {
        baseShowProgressBar();
    }
}

Вот мой код запроса на модернизацию:

 Call<InsertImageResponse> callback = api.insertUpdateImage(userId, imageid, imageData);
    callback.enqueue(new Callback<InsertImageResponse>() {
        @Override
        public void onResponse(Call<InsertImageResponse> call, Response<InsertImageResponse> response) {
            if (response.body().getReturnMessage().equalsIgnoreCase("success")) {
                handler.onSuccess(response.body());
            } else {
                handler.onError("Something went wrong");
            }
        }

        @Override
        public void onFailure(Call<InsertImageResponse> call, Throwable t) {
            handler.onError(t.getMessage());
        }
    });

Пожалуйста, помогите мне

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

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

0 голосов
/ 24 октября 2018

Вы все еще вызываете модификацию в post execute ... это в основном потоке в этот момент, когда вы взаимодействуете с элементами пользовательского интерфейса.При вызове дооснащения поток становится узким, пока не будет отправлена ​​строка base64.

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