等待asynchronous任务完成其工作

我对编程非常陌生,我有一些疑问。

我有一个AsyncTask ,我称之为RunInBackGround

我开始这个过程就像:

 new RunInBackGround().execute(); 

但是我希望等到这个调用完成之后再继续执行其他的代码语句。

我怎样才能做到这一点?

有没有办法呢?

等到这个调用完成它的执行

您将需要调用AsyncTask.get()方法获取结果,并等待doInBackground执行未完成。 但是如果你不在线程中调用get方法,这将冻结主UI线程

要在UI线程中获得结果,请按以下方式启动AsyncTask

 String str_result= new RunInBackGround().execute().get(); 

如果你的代码可以并行运行,那么最好是这样,但是你可能只是简单地使用一个线程,所以即使你的应用程序的使用stream程不得不等待它,也不会阻塞UI线程。

你在这里有两个select。

  1. 你可以在AsyncTask本身中执行你想要等待的代码。 如果它与更新UI(线程)有关,则可以使用onPostExecute方法。 当您的后台工作完成后,这会自动调用。

  2. 如果你由于某种原因被迫在Activity / Fragment / Whatever里做,你也可以让自己成为一个自定义的监听器,从AsyncTask中传播出来。 通过使用这个,你可以在你的Activity / Fragment /里有一个callback方法,不pipe什么时候你只需要调用它就可以了:也就是说当你的AsyncTask完成任何你需要等待的时候。

在你的AsyncTask添加一个ProgressDialog,如:

 private final ProgressDialog dialog = new ProgressDialog(YourActivity.this); 

你可以在onPreExecute()方法中设置消息,如:

 this.dialog.setMessage("Processing..."); this.dialog.show(); 

并在您的onPostExecute(Void result)方法消除您的ProgressDialog

AsyncTask有四种方法..

 onPreExecute -- for doing something before calling background task in Async doInBackground -- operation/Task to do in Background onProgressUpdate -- it is for progress Update onPostExecute -- this method calls after asyncTask return from doInBackground. 

你可以在onPostExecute()返回后调用doInBackground()

onPostExecute是你需要实现的。