Checking the AsyncTask status seems not working correctly (log doesn't
appear on log cat)
I'm trying to see how works an Asynctask class in android. In particular i
want reveal in real time the status of the class for see when it is
running and when it has finished. For do this, i have created a class that
extend the main activity and another class that is the asynctaks class.
This is my main class:
public class PhotoManagement extends Activity{
private String numberOfSelectedPhotos;
private Bitmap currentImage;
private String initConfiguration = "http://www.something.com";
private String response;
private ArrayList<String> formatPhotoList = new ArrayList<String>();
//create a list that will contains the available format of the photos
downloaded from the server
private ArrayList<String> pricePhotoList = new ArrayList<String>();
//create a list that will contains the available price for each format of
the photos
DownloadWebPageTask webPage = new DownloadWebPageTask();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected void onResume(){
super.onResume();
new DownloadWebPageTask().execute(initConfiguration);
if(webPage.getStatus() == AsyncTask.Status.PENDING){
Log.i("STATUS","PENDING");
}
if(webPage.getStatus() == AsyncTask.Status.RUNNING){
Log.i("","RUNNING");
}
if(webPage.getStatus() == AsyncTask.Status.FINISHED){
Log.i("","FINISHED");
}
}
}
As you can see i want only see the passages of the status with a simple
log. And here there is the asynctask class.
private class DownloadWebPageTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
for (String url : urls) {
DefaultHttpClient client = new DefaultHttpClient(); //create a
new http client
HttpGet httpGet = new HttpGet(url); //create a new http
request passing a valid url
try {
HttpResponse execute = client.execute(httpGet); //try to
execute the http get request
InputStream content = execute.getEntity().getContent();
//prepare the input stream to read the bytes of the
request
BufferedReader buffer = new BufferedReader(
new InputStreamReader(content));
String s = "";
while ((s = buffer.readLine()) != null) {
response += s; //until is present a line to read, the
response variable store the value of the lines
}
} catch (Exception e) {
Log.i("MyApp", "Download Exception : " + e.toString());
//Print the error if something goes wrong
}
}
return response; //return the response
}
@Override
protected void onPostExecute(String result) {
result = doInBackground(initConfiguration); //take the result from
the DownloadWebPageTask class
result = result.replace("null", "");
Log.i("RESULT",""+result);
//find the price and format value from the result using XmlPullParser
try {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput( new StringReader ( result ) );
int attributeNumber = xpp.getAttributeCount();
int eventType = xpp.getEventType();
String currentTag = null;
while(eventType != XmlPullParser.END_DOCUMENT){
if(eventType == XmlPullParser.START_TAG) {
currentTag = xpp.getName();
if (currentTag.equals("product")){
xpp.getAttributeValue(null, "name");
formatPhotoList.add(xpp.getAttributeValue(null,
"name"));
Log.i("FORMAT
PHOTO",""+xpp.getAttributeValue(null, "name"));
}
}
eventType = xpp.next();
}
} catch (XmlPullParserException e) {
e.printStackTrace();
Log.i("","ERROR XML PULL PARSER");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.i("","ERROR IOEXCEPTION");
}
}
}
}
As you can see i have implemented also the method onPostExecute that
should be called when the asynctask method has finished to execute the
instructions right? So at this point i don't understand why my log RUNNING
and my log FINISHED never appear on the log cat. What i'm doing wrong? I'm
tried to follow this topic Android, AsyncTask, check status? but in my
case it isn't working.
Thanks
No comments:
Post a Comment