J'ai une classe commune, dire par exemple Une Classe qui étend AsyncTask
et dispose de tous les moyens mis en œuvre c'est à dire onPreExecute
, doinbackground
et onPostExecute
.
Maintenant, il y a d'autres classes qui veulent utiliser la Classe d'Un objet.
Dire de la Classe B utilise la classe A dans la manière ci-dessous
A a = new A(context)
a.execute(url)
Puis-je récupérer le résultat dans la méthode get. Mais la méthode get n'est pas la bonne façon d'utiliser des AsyncTask. J'aimerai obtenir le résultat en onPostExecute
. Pour cela, j'ai essayé à l'aide d'un paramètre booléen qui sera vrai que dans onpostexecute
. La classe B vérifiera jusqu'à ce qu'il obtient une vraie et quand il devient vrai, il va chercher le résultat.
Mais c'est en quelque sorte le blocage de l'application.
J'ai mis le code pour asynctask ci-dessous.
'
import java.io.IOException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
public class A extends AsyncTask<String, Void, String>
{
private Context context = null;
private final HttpClient httpClient = new DefaultHttpClient();
private String content = null;
//private String error = null;
private String finalResult = null;
private static boolean isResult = false;
private ProgressDialog progressDialog = null;
public BabbleVilleSyncTask(Context context)
{
this.context = context;
progressDialog = new ProgressDialog(this.context);
}
protected void onPreExecute()
{
progressDialog.setMessage("Please Wait....");
progressDialog.show();
}
protected String doInBackground(String... urls)
{
try
{
//urls[0] = URLEncoder.encode(urls[0], "UTF-8");
HttpGet httpget = new HttpGet(urls[0]);
ResponseHandler<String> responseHandler = new BasicResponseHandler();
content = httpClient.execute(httpget, responseHandler);
}
/*catch(UnsupportedEncodingException ue)
{
error = ue.getMessage();
}*/
catch (ClientProtocolException e)
{
//error = e.getMessage();
cancel(true);
}
catch (IOException e)
{
//error = e.getMessage();
cancel(true);
}
httpClient.getConnectionManager().shutdown();
return content;
}
protected void onPostExecute(String result)
{
finalResult = result;
progressDialog.dismiss();
System.out.println("on Post execute called");
isResult = true;
}
public boolean getIsResult()
{
return isResult;
}
public void setIsResult(boolean flag)
{
isResult = flag;
}
public String getResult()
{
return finalResult;
}
}
'
Quelqu'un peut-il me faire savoir ce que le problème peut être?
Ce qui concerne
Sunil