Repeat Volley Request Every x-seconds Java

Tags: , , ,

Alright – Before you say this is a duplicate, I’ve looked over every stack overflow article I can find, and none of them work and/or answer the question properly/simply. All I need is to repeat a function with a volley request inside of it every x-seconds.

Basically, I have a fairly simple Volley request inside a function, which works absolutely perfectly on one call.

Volley function:

  private void SetBusPositions() {
        TextView textE = (TextView) findViewById(;
        RequestQueue Queue = ServerRequestsQueue.getInstance(context.getApplicationContext()).getRequestQueue();
        int SendMethod = Request.Method.GET;
        String ServerURL = "my url";
        JsonArrayRequest JOR = new JsonArrayRequest(SendMethod, ServerURL, null, new Listener<JSONArray>() {
            public void onResponse(JSONArray resp) {
                System.out.println("Response is: " + resp.toString());
                //for each object in JSON Array
                for (int i = 0; i < resp.length(); i++) {
        }, new Response.ErrorListener() {
            public void onErrorResponse(VolleyError error) {

I just want to call this function periodically, to receive data from the server and update my bus-position data. There has to be a fairly simple way to do this? I know I must be missing something, but none of the other answers seem to help.

Also, as I’m using Google maps, my class is already extending FragmentActivity. I’ve seen methods that extend Runnable to get this working — but my Java is a bit rusty here. I’ve been doing too much JS.


private final class RepeatedOperation extends AsyncTask<Map, Void, String> {

    protected String doInBackground(Map... params) {


    protected void onPostExecute(String result) {

private void callAsynchronousTask() {
final Handler handler = new Handler();
Timer timer = new Timer();
TimerTask doAsynchronousTask = new TimerTask() {       
    public void run() { Runnable() {
            public void run() {       
                try {
                    RepeatedOperation performBackgroundTask = new RepeatedOperation();
                    // RepeatedOperation this class is the class that extends AsyncTask 
                } catch (Exception e) {
                    // TODO Auto-generated catch block
timer.schedule(doAsynchronousTask, 0, 50000); //execute in every 50000 ms

Try this out and add this in the same scope as SetBusPosition()

Source: stackoverflow