首页 > 解决方案 > 改造冻结用户界面

问题描述

我正在使用 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());
        }
    });

请帮帮我

标签: androidandroid-asynctaskretrofitfreeze

解决方案


在我的情况下,Retrofit 的创建/初始化是在使用 Moshi 等适配器时特别阻塞 UI 线程的一种。其他人也在他们的回购中报告了这个问题。


推荐阅读