我正在使用以下代码来运行计时器。
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中看到这个。为什么会这样?如何摆脱旧的计时器?
答案 0 :(得分:1)
您有两个计时器的原因取决于您的代码在活动中的位置。 Activity.onStart和Activity.onResume可以(并非总是)在返回活动时被调用。
当调用Activity.onPause或Activity.onStop时,您可以调用handler.removeCallbacks(Runnable)来删除您的计时器可运行。