我可以在主线程中使用一种方法来等待AsyncTask的结果(在我的例子中是来自Web服务的值)吗?
我在没有使用AsyncTask的情况下做了一个解决方法,但我知道这不是正确的方法:
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
为了使用AsyncTask,你能帮助提示吗? 感谢。
答案 0 :(得分:1)
您正在寻找onPostExecute()
方法
当后台的所有工作完成后,将调用主线程中的onPostExecute()。
@Override
protected void onPostExecute(String result) {
//Do your stuffs here on Main UI thread.
}
答案 1 :(得分:0)
你可以使用你的asynctask的onPostExecute来调用主线程的方法,或者只是做你需要做的事情。
private class AsyncCaller extends AsyncTask<Void, Void, Void>{
@Override
protected void onPreExecute() {
super.onPreExecute();
//this method will be running on UI thread
}
@Override
protected Void doInBackground(Void... params) {
...
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
//this method will be running on UI thread
}
}
答案 2 :(得分:0)
onPostExecute()
的 AsyncTask
方法在主线程中运行。您可以依赖它来等待来自主线程的AsyncTask的结果。
private class AsyncWait extends AsyncTask<Void, Void, Void>{
@Override
protected void onPreExecute() {
super.onPreExecute();
//Whatever is done here, will run on main thread
}
@Override
protected Void doInBackground(Void... params) {
//Whatever is done here, will run on background thread
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
//Whatever is done here, will run on main thread
}
}
从主线程:
new AsyncWait().execute();