Question

I want to run the getVehicles() method every 10 seconds, I have the following code:

Handler vehiclehandler = new Handler();
    final Runnable vehiclerunnable = new Runnable() {   
        public void run() {
            getVehicles(null);
            vehiclehandler.postDelayed(this, 10000);
        } 
    };

Yet at the moment it does nothing, I've searched around and can't figure it out.

I'm new to android and have never used a handler before, only a runnable to tell something to 'runOnUiThread'.

Was it helpful?

Solution

did you run

vehiclehandler.post(vehiclerunnable)

at least once?

I mean outside the Runnable

OTHER TIPS

final Handler lHandler = new Handler();
Runnable lRunnable = new Runnable() {

    @Override
    public void run() {
        // do stuff
        lHandler.postDelayed(this, 10000);
    }
};
lHandler.post(lRunnable);

Here is an adjustment to your code that will make it run properly

Handler vehiclehandler = new Handler();
    vehiclehandler.postDelayed(new Runnable(){
            public void run(){
                    getVehicles(null);
            }
        },10000);

But this will just delay your code before get executed. If you want to repeat the process over and over again you have to use Timer, something like:

private static Timer timer = new Timer();  
timer.scheduleAtFixedRate(new mainTask(), 0, 10000);
private class mainTask extends TimerTask
    { 
        public void run() 
        {
            getVehicles(null);
        }
    }    
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top