我对编程非常陌生,我有一些疑惑。
我有一个 "AsyncTask",我称之为 "RunInBackGround"。
我开始这个过程,就像:
new RunInBackGround().execute();
但我希望等到这个调用执行完毕后,再继续执行其他的代码语句。
我怎样才能做到这一点呢?
有什么办法吗?
等到这个调用完成后再执行。
你需要调用AsyncTask.get()方法来获取结果,并等到 "doInBackground "执行完毕。但如果你不在线程中调用get方法,*这将冻结主UI线程。
为了在UI线程中获得结果,启动 "AsyncTask "作为.NET Framework:
String str_result= new RunInBackGround().execute().get();
尽管在最佳情况下,如果你的代码能够并行运行就好了,但你可以简单地使用一个线程,这样你就不会阻塞UI线程,即使你的应用程序的使用流程将不得不等待它。
你在这里几乎有两种选择;
1.你可以在AsyncTask本身中执行你想要等待的代码。如果它与更新用户界面(线程)有关,你可以使用onPostExecute方法。当你的后台工作完成后,这个方法会被自动调用。
2.2.如果你因为某些原因被迫在Activity/Fragment/Whatever中这样做,你也可以自己做一个自定义的监听器,从你的AsyncTask中广播出来。通过使用这个方法,你可以在你的Activity/Fragment/Whatever中拥有一个回调方法,这个方法只在你想要的时候被调用:也就是当你的AsyncTask完成了你必须要等待的事情。
在你的AsyncTask
中添加一个ProgressDialog,如:<br/>;
private final ProgressDialog dialog = new ProgressDialog(YourActivity.this);
你可以在onPreExecute()
方法中设置信息,如:<br/>;
this.dialog.setMessage("Processing...");
this.dialog.show();
并在onPostExecute(Void result)
方法中解除ProgressDialog
。