Czekanie na pobranie danych z AsyncTask

0

Witam, mam klasę, która ma jako wynik dawać pobraną część strony, jednak korzysta ona z funkcji, która pierw na stronie się loguje, później ładuje kilka stron, pobiera wybrane części i zwraca wynik.
Wszystko jest ok przy szybkim połączeniu, jednak gdy połączenie jest wolniejsze dane chyba nie zdążą się pobrać.
Funkcja wygląda tak:

public class GetData {
	private static String result = "<b>Błąd połączenia!</b>";
	public static String GetData(String login, String pass) {
		LoadData mAuthTask = null;
		mAuthTask = new LoadData();
		mAuthTask.execute(login, pass);
		return result;
	}




	public static class LoadData extends AsyncTask<String, Void, Boolean> {
	 
	 	@Override
		 protected Boolean doInBackground(String... params) {
		      // Wątek pracuje nad stroną
			result = wynik_pracy;
			return(czy_result_prawidlowy);
		 }
	 
		 @Override
		 protected void onPostExecute(Boolean res) {
		 if (!res)
			 result = null; //jeżeli wynik jest nieprawidłowy to zwraca pusty.
		 }
	}
}

Jak połączenie jest wolniejsze to wynik tej funkcji jest Błąd połączenia!, czy to przez to, że metoda GetData() nie czeka na skończenie metody LoadData()?
Wynik z funkcji jest używany przez kilka Aktywności jest zawsze jest on dostarczany do WebView w pierwszej, domyślnej Aktywności, może po prostu spróbować zaimplementować zmianę wv do onPostExecute()?

Jest to moja pierwsza aplikacja w Javie, napisałem ją bo ułatwia mi sprawdzanie danych na stronie na którą wchodzę kilka razy dziennie.

1

W przypadku asynctask operacje na wyniku (i ewentualne aktualizacje interfejsu) przeprowadza się w metodzie onPostExecute (nie ma od tego odstępstwa). Polecam wpisać w google android-query. Świetna biblioteka zdobywająca coraz większe uznanie. To co chcesz tutaj uzyskać można wykonać za pomocą jednej linijki używając tej biblioteki.

0

Tymczasowo rozwiązałem to tak. Kupiłem Thinking in Java i się uczę obiektowego.

public class GetData {
	private static String result;
	private static int i;
        public static String GetData(String login, String pass) {
		result = "<b>Błąd połączenia! </b><br />" + login + " ";
                LoadData mAuthTask = null;
                mAuthTask = new LoadData();
                mAuthTask.execute(login, pass);
		i = 0;
		do
		{
		try {
			Thread.sleep(100);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
		i++;}
		while(i<80);

                return result;
        }
 
 
 
 
        public static class LoadData extends AsyncTask<String, Void, Boolean> {
 
                 @Override
                 protected Boolean doInBackground(String... params) {
                      // Wątek pracuje nad stroną
                        result = wynik_pracy;
                        return(czy_result_prawidlowy);
                 }
 
                 @Override
                 protected void onPostExecute(Boolean res) {
			 i = 100;
                 }
        }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1