与android中的处理程序相关的问题

时间:2014-05-23 15:02:49

标签: android handler

我正在使用以下代码来运行计时器。

Handler handler = new Handler(); 
int time=0;
Runnable runable = new Runnable() { 

    @Override 
    public void run() { 
            time++;
            Log.d("time", ""+time);
            textview.setText(""+time);
            handler.postDelayed(this, 1000); 

    } 
}; 
handler.postDelayed(runable, 1000); 

此处理程序附加到UI线程。当我导航到其他一些活动并回到这个活动时,我得到两个计时器,旧计时器仍然存在,我可以在logcat中看到这个。为什么会这样?如何摆脱旧的计时器?

1 个答案:

答案 0 :(得分:1)

您有两个计时器的原因取决于您的代码在活动中的位置。 Activity.onStart和Activity.onResume可以(并非总是)在返回活动时被调用。

当调用Activity.onPause或Activity.onStop时,您可以调用handler.removeCallbacks(Runnable)来删除您的计时器可运行。