在我的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 presentation = new Presentation();
// Do some stuff with it
使用AsyncTask我不知道我应该怎么做,到目前为止我有这样的事情: public Presentation(String URL){ // 做东西 new 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
}
谢谢!
答案 0 :(得分:2)
您可以在执行网络工作时显示进度对话框:
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();
}