在我的应用程序中,我需要执行网络操作,所以我创建了一个AsyncTask
类来在后台执行它,但是我需要用我得到的信息填充一些文本视图。
所以我的问题是我可以在主线程中做什么来等待AsyncTask
类完成doInBackground
操作
这是我的 AsyncTask 类:
public class ObtenerDatos extends AsyncTask<Void, Void, Void> {
private PuertosSaxParser saxparser;
private ArrayList<clsPuertos> Puertos;
/** Return the Puertos info to the main class */
public ArrayList<clsPuertos> getPuertos() {
return Puertos;
}
/** Get the XML info and do the parse */
@Override
protected Void doInBackground(Void... params) {
try {
saxparser = new PuertosSaxParser("http://www.androide.comyr.com/valores.xml");
Puertos = saxparser.parseXML();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
这就是我从主线程中调用它的方式:
try {
int_datos.execute();
//HERE I NEED TO WAIT FOR THE AsyncTask TO COMPLETE THE doInBackground OPERATIONS
Puertos = int_datos.getPuertos();
//THEN I FILL THE TEXTVIEWs WITH THE INFO OF Puertos
} catch (Exception e) {
e.printStackTrace();
}
谢谢你的帮助!
编辑:
主类:
ObtenerDatos int_datos = new ObtenerDatos(this);
int_datos.execute();
ObtenerDatos(AsyncTask 类):
public class ObtenerDatos extends AsyncTask<Void, Void, Void> {
private PuertosSaxParser saxparser;
private ArrayList<clsPuertos> Puertos;
private Context contexto;
final TextView textSanferPleamarHora = new TextView(contexto);
public ObtenerDatos(Context contexto){
this.contexto = contexto;
}
我尝试将上下文从 Main 传递给AsyncTask
类以在那里设置,TextViews
但我得到了一些错误。
这是正确的吗?