我有一个共同的阶级说的如A级延伸AsyncTask,并已实施即所有的方法onPreExecute,doinbackground和onPostExecute。
现在,还有其他一些要使用Class A对象的类。
假设B类以以下方式使用A类
A a = new A(context)
a.execute(url)
然后我在get方法中获取结果。但是get方法不是使用AsyncTask的正确方法。我想在中得到结果onPostExecute。为此,我尝试使用布尔参数,该参数仅在中有效onpostexecute。B类将检查直到它变为真,并且在它变为真时将获取结果。
但这以某种方式阻止了应用程序。
我在下面放置了asynctask的代码。
'
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;
}
有人可以让我知道可能是什么问题吗?
慕雪6442864
达令说
相关分类