в моем приложении Мне нужно выполнить сетевые операции, поэтому я сделал класс AsyncTask
, чтобы выполнить его на фоне, но затем мне нужно заполнить некоторое текстовое изображение информацией, которую я получил.wait in the main thread for 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();
}
Спасибо за помощь!
EDIT:
MainClass:
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
там, но я получаю некоторые ошибки.
Это право?
набор текста или обновления пользовательского интерфейса в onPostExecute() или использовать runonuithread un doinbackgroundd() для обновления ui – Raghunandan
Вы также можете использовать обратные вызовы, как я здесь: https://github.com/nedountk/Android-Rest-API. Основной момент в том, что вы не ждете. Вы разрешаете поток пользовательского интерфейса продолжать, чтобы система оставалась отзывчивой и выполняла выполнение, когда сервер возвращает данные. –