在按钮闲置3秒后,我需要一个线程来启动,有没有简单的方法?
我正在构建一个计数器应用程序,该按钮触发两个计数器,即总计数器和“轻击计数器”,轻击计数器有助于跟踪值的实际变化,显示用户执行了多少次轻击它会在几秒钟后消失,以便用户再次轻按。
答案 0 :(得分:0)
首先,使用Timer
(使用您的线程)创建一个TimerTask
,并安排它在3秒钟后运行。
每次按下按钮,都会重置计时器。
public class MyClass{
private Timer timer=new Timer()
private TimerTask task=new TimerTask(){
public void run(){
//your action
}
};
public void init(){
timer.schedule(task,3000);
}
public void onButtonClick(){
task.cancel();
timer.schedule(task,3000);
}
}
答案 1 :(得分:0)
对于类似这样的东西,我通常将Handler与Runnable一起使用,以便在用户未执行特定操作X milliseconds
之后执行操作。
首先,创建一个runnable
和一个handler
final android.os.Handler handler = new android.os.Handler();
private Runnable runnable;
private final long DELAY = 3000; // how many milliseconds you want to wait
然后添加onClickListener
:
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
然后,在onClick
事件中,删除callbacks
并再次使handler
处于如下状态:
if(runnable != null) {
// in this case the user already clicked once at least
handler.removeCallbacks(runnable);
}
runnable = new Runnable() {
@Override
public void run() {
//this code will run when user isn't clicking for the time you set before.
}
};
handler.postDelayed(runnable, DELAY);
最终结果:
final android.os.Handler handler = new android.os.Handler();
private Runnable runnable;
private final long DELAY = 3000; // how many milliseconds you want to wait
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// all your previous stuffs
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(runnable != null) {
// in this case the user already clicked once at least
handler.removeCallbacks(runnable);
}
runnable = new Runnable() {
@Override
public void run() {
//this code will run when user isn't clicking for the time you set before.
}
};
handler.postDelayed(runnable, DELAY);
}
});
}
我希望这对任何问题都可以帮助
答案 2 :(得分:0)
处理程序可能在这种情况下工作,延迟为3000毫秒。
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// do action
}
}, 3000);