在onResume()方法中重新启动计时器?

TMA*_*A-1 2 java android timer onresume

我使用a Timer来不断更新a TextView,但我在onResume()方法期间无法重新启动计时器.我timer.cancel()onPause()onDestroy()方法中使用,但如何重新启动计时器onResume()

这是我的计时器代码......

int delay = 1000; 
int period = 1000; 
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {

public void run() {
        //I update the TextView here 
    }

}, delay, period);
Run Code Online (Sandbox Code Playgroud)

Jus*_*ler 5

更容易的选择是使用Handler该类.我不推荐使用Timer类,因为它与Activity的生命周期没有关系,你必须自己担心任何潜在的线程问题.使用Handler的好处是你的所有回调都将在主线程上(因此不需要担心线程问题).以下是如何执行此操作的简单示例.

 @Override
protected void onCreate(Bundle savedInstanceState)
{
   ....
   mHandler = new Handler();
}

 @Override
protected void onResume() 
{
     mHandler.postDelayed(myRunnable, UPDATE_RATE);
}

 @Override
protected void onPause() 
{
     mHandler.removeCallbacks(myRunnable);
}

 private final Runnable myRunnable= new Runnable() {
    @Override
    public void run()
    { 
       //Do task
       mHandler.postDelayed(myRunnable, UPDATE_RATE);
    }
 }
Run Code Online (Sandbox Code Playgroud)