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.