I would like my android app to pause for a while after receive the resond from the server. I am making use of the following code to try to pause my program:
private Handler mHandler;
private Runnable mCountUpdater = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
mHandler.postDelayed(this, 15000);
}
};
but no matter I put call the wait in either way mentioned below, it does not work
1. put inside the button handler:
btnin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//set the values
grab.onPreExecute("TechID", Build.SERIAL);
grab.onPreExecute("Type", "Checkin");
//set the destination and send the request
grab.execute(new String[]{"http://192.168.1.150/Me/check.php"});
//close the activity
mHandler = new Handler();
mHandler.post(mCountUpdater);
finish();
}
});
2.put in the onPostExecute() method of AsynTask:
private class GrabURL extends AsyncTask<String, Void, Void>{
//ArrayList object for storing the string pairs
ArrayList<NameValuePair> nameValuePairs;
public GrabURL() {
//constructor of the class
nameValuePairs = new ArrayList<NameValuePair>();
}
protected void onPreExecute(String key, String value) {
//store the pair of values into the ArrayList
nameValuePairs.add(new BasicNameValuePair(key,value));
}
@Override
protected Void doInBackground(String... urls) {
// TODO Auto-generated method stub
//Operation being executed in another thread
try{
//set up the type of HTTPClient
HttpClient client = new DefaultHttpClient();
//set up the location of the server
HttpPost post = new HttpPost(urls[0]);
//translate form of pairs to UrlEncodedFormEntity
UrlEncodedFormEntity ent = new UrlEncodedFormEntity(nameValuePairs,HTTP.UTF_8);
//set up the entity being sent by post method
post.setEntity(ent);
//execute the url and post the values
//client.execute(post);
HttpResponse responsePOST = client.execute(post);
HttpEntity resEntity = responsePOST.getEntity();
line = EntityUtils.toString(resEntity);
} catch (Exception e) {
//catch the exception
line = "Can't connect to server";
}
return null;
}
protected void onPostExecute(Void unused) {
mRespond.setVisibility(View.VISIBLE);
mRespond.setText(line);
btnin.setVisibility(View.GONE);
Toast.makeText(getApplicationContext(), "Value updated", Toast.LENGTH_SHORT).show();
mHandler = new Handler();
mHandler.post(mCountUpdater);
}
}
Is it the way I used to pause the program is incorrect or I have put the wait function in a wrong position?