Tuesday, August 28, 2012

[android-developers] AsyncTask - onPostExecute is not called

I'm working on one project and I need to call one AsyncTask, but the onPostExecute method is not called.

This is my class:

public class WebService extends AsyncTask<String, String, String> {
   
private ArrayList<SimpleObserver> listeners;
   
private int responseCode;
   
private String message;
   
private String response;
   
private String URL;

   
public WebService() {
        listeners
= new ArrayList<SimpleObserver>();
   
}

   
public void addListener(SimpleObserver obs) {
        listeners
.add(obs);
   
}

   
public void removeListener(SimpleObserver obs) {
        listeners
.remove(obs);
   
}

   
public void notifyListener(String s) {
       
for (SimpleObserver listener : listeners)
            listener
.onChange(s);
   
}

   
public String getResponse() {
       
return response;
   
}

   
public String getErrorMessage() {
       
return message;
   
}

   
public int getResponseCode() {
       
return responseCode;
   
}

   
@Override
   
protected void onPreExecute() {
       
//notifyListener("A calcular");
   
}

   
@Override
   
protected String doInBackground(String... urls) {
       
String response = "";
       
for (String url : urls) {
           
HttpParams my_httpParams = new BasicHttpParams();
           
final String proxyHost = android.net.Proxy.getDefaultHost();
           
final int proxyPort = android.net.Proxy.getDefaultPort();
           
if(proxyPort != -1)
           
{
              my_httpParams
.setParameter(ConnRoutePNames.DEFAULT_PROXY, new HttpHost(proxyHost, proxyPort));            
           
}

           
DefaultHttpClient client = new DefaultHttpClient(my_httpParams);
           
HttpGet httpGet = new HttpGet(url);
           
Log.d("URL serviço HttpGet", url);
           
try {
               
HttpResponse execute = client.execute(httpGet);
               
InputStream content = execute.getEntity().getContent();

               
BufferedReader buffer = new BufferedReader(
                       
new InputStreamReader(content));
               
String s = "";
               
while ((s = buffer.readLine()) != null) {
                    response
+= s;
               
}

               
Log.d("RESPOSTA do web service", response);

           
} catch (Exception e) {
                e
.printStackTrace();
                response
= e.getMessage();
               
Log.e("ERRO de respota", e.getMessage());
           
}
       
}
       
return response;
   
}

   
@Override
   
protected void onPostExecute(String result) {
       
Log.d("onPostExecute Serviço", result);
        notifyListener
(result);
   
}
}

I have created this method: 

public void executeService(String param) {
       
try {
           
Log.d("Entrar", "no serviço");
            s
.execute(new String [] {URL+param});
       
} catch (Exception e) {
           
// TODO Auto-generated catch block
            e
.printStackTrace();
           
Log.e("Erro ao aceder ao web service", e.getMessage());
       
}
   
}
to call the task. Someone can help me to understand which is the problem?  

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

No comments:

Post a Comment