我有一項活動,通過.net網絡服務檢查用戶名可用性,我需要在通話期間顯示「請稍候」信息,因爲它可能需要一兩秒鐘 - 我有嘗試使用AsyncTask和線程,但我遇到的問題是,我實際上想阻止主要(並且僅)線程,直到Web服務調用完成,因爲我依賴於處理其他邏輯的結果。在網絡服務呼叫期間顯示「請稍候」
我嘗試過allsorts但沒有快樂 - 任何人都可以幫忙嗎?
按照要求,這裏是我的代碼段:
private OnClickListener RegistrationListener = new OnClickListener() {
public void onClick(View v) {
ClearFieldHighlighting();
if (ValidateData()) {
if (IsOnline()) {
if (UsernameIsAvailable()) {
try {
iNETUserID = CreateOnlineUser();
} catch (Exception e) {
}
..更多代碼.. }
這裏是 'UsernameIsAvailable' 功能:
公共布爾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 w HICH是一個外部的jar文件來處理Web服務的東西
感謝 邁克
感謝,我明白我不應該塊UI線程,我只需要!這裏是我的代碼段: 私人OnClickListener RegistrationListener =新OnClickListener(){ \t \t公共無效的onClick(視圖v){ \t \t \t ClearFieldHighlighting(); \t \t \t如果(是validateData()){ \t \t \t \t如果(IsOnline()){ \t \t \t \t \t如果(UsernameIsAvailable()){ \t \t \t \t \t \t嘗試{ \t \t \t \t \t \t \t iNETUserID = CreateOnlineUser(); \t \t \t \t \t \t}趕上(例外五){ \t \t \t \t \t \t} 這是UsernameIsAvailable通話,因爲它返回一個布爾結果,我需要繼續,這是造成的問題! – Mike