Is a Timer the best way to achieve recursive in Android?
Timers and TimerTasks appear to be discouraged for Android, especially when interacting with the UI. Each Timer gets a thread on which to do its work, which makes UI updates problematic, and which also presumably causes unnecessary overhead for small tasks.

This could be updated to use the postDelayed() or postAtTime() method of Handler, which takes advantage of the existing message queue.  Note: this code is not tested.

ViewPager mViewPager ;
mViewPager = (ViewPager) findViewById(R.id.viewpager);

private class UpdateTimeTask implements Runnable {
    private static final int TASK_TIME_MS = 5000;

    private int mLength = 0;
    private Handler mHandler;

    public UpdateTimeTask(final int length) {
        this.mLength = length;
        // Get the main thread's Handler. If the task is
        // always on the main thread, we can just do
        // mHandler = new Handler();
        // Otherwise, do:
        mHandler = new Handler(Looper.getMainLooper());

        // Get things started.
        // If this is intended to be done on the UI thread,
        // just call run() directly.
        // run();
        // If this is intended to be done on any thread, use
        // the Handler to execute run()
        mHandler.post(this);
    }

    public void run() {
        if (mViewPager.getCurrentItem()+1 &lt; mLength) {
            Updateviewpager(mViewPager.getCurrentItem() + 1);
        } else {
            Updateviewpager(0);
        }

        // Schedule to repeat
        mHandler.postDelayed(this, TASK_TIME_MS);
    }
}

public void Updateviewpager(int position) {
    mViewPager.setCurrentItem(position);
}


References: 
Android Timer Documentation
Updating the UI from a Timer