2015-08-14 2 views
0

Я изменяю элементы Viewpager Programmatically с использованием mViewPager.setCurrentItem(position); с регулярным интервалом времени рекурсивно. Ниже код работает нормально. скажите, пожалуйста, это лучший способ достичь этого или есть какие-то проблемы с моим кодом. Заранее спасибо.Таймер - лучший способ добиться рекурсивности в Android?

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

    Timer timer = new Timer(); 
    timer.schedule(new UpdateTimeTask(backgroundimages.length), 1, 5000); 

    private class UpdateTimeTask extends TimerTask { 
    int mLength = 0; 

    public UpdateTimeTask(final int length) { 
     this.mLength = length; 
    } 

    public void run() { 
     mViewPager.post(new Runnable() { 
      @Override 
      public void run() { 
       if (mViewPager.getCurrentItem()+1 < mLength) { 
        Updateviewpager(mViewPager.getCurrentItem() + 1); 
       } else { 
        Updateviewpager(0); 
       } 
      } 
     }); 
    } 
} 

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

Если вы ищете обратную связь по определенному фрагменту кода вашего проекта, лучше спросите его в CodeReview http://codereview.stackexchange.com/ – Emil

+0

извините, я этого не знал. Спасибо за ваш совет. –

ответ

0

Вы можете использовать CountDownTimer

т.е.

new CountDownTimer(30000, 1000) { 

public void onTick(long millisUntilFinished) { 
    mTextField.setText("seconds remaining: " + millisUntilFinished/1000); 
} 

public void onFinish() { 
    mTextField.setText("done!"); 
} 

} .start();

Таким образом, у вас не будет никакой дополнительной нити.

+0

Но это остановится после 30000 миллисекунд. Я хочу, чтобы он повторялся бесконечно. –

+0

in onFinish() метод call onStart(). Он будет работать бесконечно :) –

Смежные вопросы