改造冻结 UI



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

请帮帮我

您仍然在执行后调用改造...此时,当您与 UI 元素交互时,这是在主线程上。通过调用 retrofit,它会使线程成为瓶颈,直到发送 base64 字符串。

默认情况下,改造在后台运行,并使用回调将结果发送到主线程。请参阅性能分析器,然后您可以了解哪一侧占用了设备的更多内存。

就我而言,当someString为 null 时,someString.equalsIgnoreCase(otherString)停止了剩余的代码执行(没有错误(;

就我而言,Retrofit 的创建/初始化是当您使用 Moshi 等适配器时特别阻止 UI 线程的创建/初始化。其他人也在其存储库中报告了此问题。

相关内容

  • 没有找到相关文章

最新更新