使用 Handler 多次触发 runnable 的效果
The effects of firing off a runnable multiple times using a Handler
我有这样简单的可运行程序
private Runnable runnable = new Runnable()
{
@Override
public void run()
{
someVariable = true;
}
};
我将它与 Handler 一起使用并像这样延迟
handler.postDelayed(runnable, 60000);
如果此功能收到垃圾邮件并且重复调用上述功能,它会将 runnable 多次添加到消息队列中。
如果是这种情况,在添加另一个之前是否先检查消息队列中是否有一个?
您好,我的做法是在我的处理程序运行一次后删除消息和回调。我的代码的一个简单示例是
final Handler handler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
Log.d("runnable", "handler invoked just once");
handler.removeCallbacksAndMessages(null);
}
};
handler.postDelayed(runnable, 2000);
handler.postDelayed(runnable, 2000); // demo: if this is called multiple times my runnable code wont run
我有这样简单的可运行程序
private Runnable runnable = new Runnable()
{
@Override
public void run()
{
someVariable = true;
}
};
我将它与 Handler 一起使用并像这样延迟
handler.postDelayed(runnable, 60000);
如果此功能收到垃圾邮件并且重复调用上述功能,它会将 runnable 多次添加到消息队列中。
如果是这种情况,在添加另一个之前是否先检查消息队列中是否有一个?
您好,我的做法是在我的处理程序运行一次后删除消息和回调。我的代码的一个简单示例是
final Handler handler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
Log.d("runnable", "handler invoked just once");
handler.removeCallbacksAndMessages(null);
}
};
handler.postDelayed(runnable, 2000);
handler.postDelayed(runnable, 2000); // demo: if this is called multiple times my runnable code wont run