我对编程很新,我有些疑惑.
我有一个AsyncTask我称之为RunInBackGround.
我开始这个过程就像:
new RunInBackGround().execute();
Run Code Online (Sandbox Code Playgroud)
但是我希望等到这个调用完成它的执行,然后继续执行其他代码语句.
我怎样才能做到这一点?
有什么办法吗?
ρяσ*_*я K 124
等到这个电话完成它的执行
您将需要调用AsyncTask.get()方法来获取结果并等待doInBackground执行未完成.但如果不在Thread中调用get方法,这将冻结主UI线程.
要在UI中获得结果,请将线程开始AsyncTask为:
String str_result= new RunInBackGround().execute().get();
Run Code Online (Sandbox Code Playgroud)
Ste*_*ijn 35
虽然最佳情况下,如果您的代码可以并行运行会很好,但您可能只是使用线程,因此您不会阻止UI线程,即使您的应用程序的使用流程必须等待它.
你在这里有2个选择;
您可以在AsyncTask本身中执行您想要等待的代码.如果它与更新UI(线程)有关,则可以使用onPostExecute方法.完成后台工作后会自动调用此方法.
如果由于某种原因你被迫在Activity/Fragment/Whatever中执行它,你也可以自己制作一个自定义监听器,你可以从你的AsyncTask广播.通过使用它,你可以在Activity/Fragment/Whatever中有一个回调方法,只有当你想要它时才会被调用:也就是当你的AsyncTask用你必须等待的任何东西完成时.
KDe*_*kar 15
在你AsyncTask添加一个ProgressDialog像:
private final ProgressDialog dialog = new ProgressDialog(YourActivity.this);
Run Code Online (Sandbox Code Playgroud)
你可以在onPreExecute()方法中设置setMessage :
this.dialog.setMessage("Processing...");
this.dialog.show();
Run Code Online (Sandbox Code Playgroud)
并在你的onPostExecute(Void result)方法中解雇你的ProgressDialog.
Xar*_*mer 13
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.
Run Code Online (Sandbox Code Playgroud)
你可以onPostExecute()在回来之后打电话给你doInBackground()
onPostExecute是您需要实现的.
| 归档时间: |
|
| 查看次数: |
161384 次 |
| 最近记录: |