gpt4 book ai didi

android - 在android中重用定时器

转载 作者:太空宇宙 更新时间:2023-11-03 13:25:31 24 4
gpt4 key购买 nike

在我的 android 应用程序中,我有以下相关代码:

/*Code outside*/    
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Timer t = new Timer();
t.scheduleAtFixedRate(
new TimerTask(){
public void run(){
stuffToBeDone();
}
},someVariableDelay,someVariablePeriod);
}
}

一切都很顺利,直到我注意到每次按下按钮时 stuffToBeDone() 都会运行一次。据我所知,每次 onClick() 被调用时,旧的 Timer 不应该再存在了,但不知何故 TimerTask 仍然存在。

在第二次单击按钮时,我不再引用第一个 Timer 来取消()它(因为它不应该再存在了)。如果我在 外部代码 中将 Timer 声明为 final 变量以便我可以执行此操作,取消后我将无法再重用它。那么我怎样才能终止那个 TimerTask 但仍然能够使用 Timer?

最佳答案

Android Timer 是基于 Android 开发者网站的线程:

http://developer.android.com/reference/java/util/Timer.html

When a timer is no longer needed, users should call cancel(), which releases the timer's thread and other resources. Timers not explicitly cancelled may hold resources indefinitely.

我建议仅在 onclicklistener 中实例化计时器,即类似于此的内容:

    /*Code outside*/    
Timer t = null;
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(t == null)
t = new Timer();
else
t.cancel();
t.scheduleAtFixedRate(
new TimerTask(){
public void run(){
stuffToBeDone();
}
},someVariableDelay,someVariablePeriod);
}
}

关于android - 在android中重用定时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20929980/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com