作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 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/
我是一名优秀的程序员,十分优秀!