У меня есть действие, которое проверяет доступность имени пользователя через веб-сервисы .net, мне нужно показать сообщение «Пожалуйста, подождите» во время вызова, так как это может занять секунду или две - я экспериментировал с AsyncTask и Threading, но проблема у меня Я хочу заблокировать основной (и единственный) поток до тех пор, пока вызов веб-службы не будет завершен, так как я в зависимости от полученного результата обрабатываю другую логику.
Я пробовал ассорти, но без радости - кто-нибудь может помочь, пожалуйста?
По запросу, здесь есть раздел моего кода:
private OnClickListener RegistrationListener = new OnClickListener() {
public void onClick(View v) {
ClearFieldHighlighting();
if (ValidateData()) {
if (IsOnline()) {
if (UsernameIsAvailable()) {
try {
iNETUserID = CreateOnlineUser();
} catch (Exception e) {
}
.. больше кода ..
}
Вот функция 'UsernameIsAvailable':
public boolean UsernameIsAvailable () {
Boolean bUsernameIsAvailable = false;
SoapObject request = new SoapObject(TA.sNAMESPACE,
TA.METHOD_IsUsernameAvailable);
request.addProperty("sUsername", sEmail);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(
TA.WEBSERVICES_URL);
try {
androidHttpTransport.call(TA.SOAP_ACTION_IsUsernameAvailable,
envelope);
SoapObject thisresponse = (SoapObject) envelope.bodyIn;
for (int i = 0; i < thisresponse.getPropertyCount(); i++) {
Object obj = thisresponse.getProperty(i);
SoapPrimitive soapPrimitive = (SoapPrimitive) obj;
bUsernameIsAvailable = Boolean.parseBoolean(soapPrimitive
.toString());
}
} catch (Exception e) {
}
return bUsernameIsAvailable;
}
Я использую KSoap2, который является внешним jar-файлом для обработки содержимого веб-службы
Спасибо
Mike