我正在尝试使用嵌套的postDelayed,因为我需要在5分钟后(延迟5分钟)执行某项操作,在30秒后(延迟)停止该操作,然后再执行其他操作,然后从头开始在循环中再次重复这两个事件。我似乎无法正确解决。
我有沙发的代码:
private long EnabledAfter = 300000; // 5 minutes
private long DisabledAfter = 30000; // 30 seconds
public void start_timers(){
on_delayed(EnabledAfter);
}//end method
private void on_delayed(long period_off){
Delayed = new Runnable() {
public void run() {
something.enable(context);
something.enable_else(context, true);
off_delayed(DisabledAfter); // and disable both again delayed
Handler.postDelayed(Delayed, EnabledAfter);
}
};
Handler.postDelayed(Delayed, EnabledAfter);
}//end method
private void off_delayed(long period_on){
Delayed = new Runnable() {
public void run() {
something.disable(context);
something.disable_else(context, false);
on_delayed(period_on); // start the proces again from the start...
//Handler.postDelayed(Delayed, DisabledAfter);
}
};
Handler.postDelayed(Delayed, period_on);
}//end method
这样做的问题是,在第一次运行时运行良好,但随后似乎彼此叠加…并且所有延迟都令人厌烦。我需要Runnable
在5分钟30秒内同时执行两者,然后重复该过程。
这段代码运行了几次之后的最终结果是,每个Handler
帖子的实例过多Runnable
。如上所述:
您还没有利用a
Runnable
可以多次发布到同一队列的事实,不必每次都创建一个新队列。如果要取消操作,这是必不可少的,因为remove方法会Handler
查找所有匹配的实例以从队列中删除。您可以尝试这样的方法:
private long EnabledAfter = 300000; // 5 minutes
private long DisabledAfter = 30000; // 30 seconds
private Runnable Enabler = new Runnable() {
public void run() {
something.enable(context);
something.enable_else(context, true);
Handler.postDelayed(Disabler, DisabledAfter);
}
};
private Runnable Disabler = new Runnable() {
public void run() {
something.disable(context);
something.disable_else(context, false);
Handler.postDelayed(Enabler, EnabledAfter);
}
};
public void start_timers(){
Handler.postDelayed(Enabler, EnabledAfter);
}//end method
public void stop_timers(){
Handler.removeCallbacks(Enabler);
Handler.removeCallbacks(Disabler);
}//end method
我还添加了另一种方法,可以通过Runnable
从队列中删除项目的所有实例来取消计时器操作。
高温超导
问题内容: 是否可以在spring嵌套@Transactional带注释的方法?考虑这样的事情: 如果我在b()中回滚并在a()中回滚,在这种情况下会发生什么? 问题答案: 不需要 对方法的第二个注释,因为默认情况下 ,其传播为,因此由method调用的方法将是事务性的。如果要在通过method调用的方法中启动新事务,则需要修改传播规则。阅读有关交易传播的信息。
目标 了解如何定义嵌套类和何时适合使用它们 了解使用嵌套类的副作用 了解 new 运算符在嵌套类中的特殊用法 了解如何和何时使用静态内部类和匿名内部类 在何处使用嵌套类 顾名思义,嵌套类(或内部类) 是在一个类中定义的另一个类。 public class EnclosingClass { . . . public class NestedClass { . . . } } 像成
问题内容: 我必须与API进行交互,并且响应格式(根据我的阅读)似乎结构不良。我发现一个Google 网上论坛在这里回答了一个类似的问题,但是我在实现Response类来处理Gson.fromJson时遇到了麻烦。有没有我想念的例子? 问题答案: JSON对象可以由或Javabean类表示。这是一个使用Javabean的示例。 如下使用它:
问题内容: 我有正在使用nodeJS读取的csv文件。我在阅读之前将每个文件转换为文本。 文件中的每一行都有以’=’分隔的数据。 每行看起来像 “ =“之前的第一部分代表我应用程序中json对象的索引。我的目的是解析此数据并为其构建json表示,以便上面的行成为 使用javascript / node js; 如何将应该表示嵌套JSON键序列的字符串转换为上述json对象? 问题答案: 您可以分割
如何聚合一个值在嵌套在Elasticsearch嵌套位置?我对一个嵌套对象没有问题,但在嵌套对象内的嵌套我感到困惑... 样本数据: 欲望结果: 在索引映射中,我将cat_a和条目字段的类型设置为嵌套,当我从工具字段查询聚合时,在cat_a的根(级别1)中没有问题,并且可以工作,但是在聚合中在rx_a(这是在第2级)我不能检索结果,它或空或显示错误,因为我的错误查询。 查询级别1 agg: 如何处
我遇到了一个问题,我的程序只在的一次迭代中结束,我不确定不合逻辑的代码在哪里。 全球给予: 我复杂的嵌套从这里开始,但我不确定如何修复它,以便它迭代通过和数字for-循环: 我得到以下输出: 我从来没有得到Susie的数据,我很早就回来了,但似乎不知道在哪里。对于问题所在(甚至重构)的任何帮助/指导都将不胜感激。提前谢谢!