Эй, у меня есть приложение, которое подключается к нескольким сайтам с использованием defaulthttpclient, и я обнаружил, что мне нужно использовать AsyncTask, поскольку запросы задерживают поток пользовательского интерфейса.В моем коде я создаю экземпляр класса состояний, т.е. State state = new O2State ();с разными состояниями для разных сайтов.
Затем я вызываю state.logon (String username, String password);которая возвращает строку, содержащую детали результата, так:
String result = state.logon(username, password);
Я пытался реализовать асинхронные задачи для запуска этого кода в другом потоке и возврата строки обратно в поток пользовательского интерфейса по завершении.Идея в том, что я выведу диалоговое окно прогресса, запустлю поток и по завершении выведу диалоговое окно с результатом.
Я смотрел на этот пример:
public void onClick(View v) {
new DownloadImageTask().execute("http://example.com/image.png");
}
private class DownloadImageTask extends AsyncTask {
protected Bitmap doInBackground(String... urls) {
return loadImageFromNetwork(urls[0]);
}
protected void onPostExecute(Bitmap result) {
mImageView.setImageBitmap(result);
}
}
Я застрял: я не думаю, что мне понадобятся какие-либо аргументы, но doinbackground, кажется, требует списокпараметров.Мне также незнакомо это время объявления аргументов метода.
Во-вторых: я не уверен, как вернуть полученную строку, когда поток завершит выполнение.Должен ли я просто создать «DoThisWhenTheThreadIsFinished (String result)» и вызвать его из onPostExecute?
В любом случае, я надеюсь, что это не слишком запутанно для чтения, и я очень признателен за любую помощь, которую вы можете предложить.Спасибо