gpt4 book ai didi

java - 我应该如何重构我的代码以避免 Android 上主线程上的网络异常?

转载 作者:行者123 更新时间:2023-12-02 07:33:34 24 4
gpt4 key购买 nike

在我的 MainActivity 中,我有一个类初始化,如下所示:

Presentation presentation = new Presentation("link");

Presentation 是一个使用 Web 服务器上 .JSON 文件中的值进行初始化的类:

public Presentation(String URL) {
// Do stuff
doNetworking();
}
private doNetworking() {
// Network access here
// This throws the Network on Main Thread exception
}

在我的 MainActivity 中,我需要在下一步中提供演示文稿的所有值:

Presentation presentation = new Presentation();
// Do some stuff with it

使用 AsyncTask 我不确定应该如何执行此操作,到目前为止我有这样的事情: 公开演示(字符串 URL){ //做东西 新的InitializePresentation().execute(URL); }

private class InitializePresentation extends AsyncTask<String, Void, Boolean> {
// Amongst other things
protected Boolean doInBackground(String... params) {
// Do the networking stuff here
}
}

我需要重构此代码,使其异步但行为类似于同步调用。非常感谢任何帮助。

编辑如何重构代码来实现这一目标?

Bitmap b = new Bitmap();
Load bitmap from network;
Use bitmap in imageview;

可以这样使用吗?或者我必须像这样使用它

Async, doInBackground() {
Load bitmap from network
Use bitmap in imageview
Continue with application
}

谢谢!

最佳答案

您可以在执行网络操作时显示进度对话框:

private ProgressDialog progressDialog;
private Context context;

public InitializePresentation (Context context) {
this.context = context;
}

@Override
protected void onPreExecute() {
progressDialog = ProgressDialog.show(context, "", "loading", true);
}

/*
* @see android.os.AsyncTask#doInBackground(Params[])
*/
@Override
protected String doInBackground(String... arg0) {
// Do the networking stuff here
}

@Override
protected void onPostExecute(final String result) {
progressDialog.dismiss();
}

关于java - 我应该如何重构我的代码以避免 Android 上主线程上的网络异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12599362/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com