У меня есть приложение для Android, которое вызывает веб-службу несколько раз по всему приложению.Поскольку вызов метода ksoap2 делает приложение нереагирующим, мне пришлось поместить все это в класс AsyncTask.
Все, что я сделал, это сделал, чтобы ProgressDialog появился в onPreExecute (), и вызов веб-службы в doInBackground, как это было сделано в моей основной программе.Однако, хотя вызов веб-службы работает, ответ веб-службы «com.SmartInfinity.InfinityMain$webServiceCall@40697618».К сведению, com.SmartInfinity - это мой пакет приложений, InfinityMain - моя основная деятельность, а webServiceCall - метод, который вызывает веб-сервис.
Кто-нибудь знает, почему это происходит?Предполагается, что веб-сервис возвращает результаты как «[field_x1 = value_x1; field_y1 = value + y1; field_x2 = value_x2; field_y2 = value_y2;]" Когда я вызываю ту же функцию с теми же аргументами вне AsyncTask, она отлично работает.
Спасибо за вашу помощь.
Редактировать: вот мой код:
private class webServiceCall extends AsyncTask<String, Void, Object>
{
@Override
protected void onPreExecute()
{
dialog.show();
}
protected Object onPostExecute(Object... params)
{
dialog.dismiss();
return params;
}
@Override
protected Object doInBackground(String... params)
{
Object result = null;
String[] temp = new String[params.length - 2];
String method_name = params[0];
String action_name = params[1];
for (int i = 2; i < params.length; i++)
{
temp[i-2] = params[i];
}
result = callWebService(method_name, action_name, temp, 60);
dialog.dismiss();
return result;
}
}
Результат затем преобразуется в строку и используется как обычно.Вот как я вызываю AsyncTask и обрабатываю свой результат:
Object result = new webServiceCall().execute(UserArgs);
String str = result.toString();
String delims = "[=;]+";
String [] stringuser = str.split(delims);