嵌套postDelayedRunnableHandler Android

嵌套postDelayedRunnableHandler Android,第1张

嵌套postDelayed / Runnable / Handler Android

这段代码运行了几次之后的最终结果是,每个

Handler
帖子的实例过多
Runnable
。如上所述:

  1. 首次on_delayed帖子1可运行
  2. 该runnable触发,然后发布2个Runnable(一个在off_delayed中,另一个在从run()返回之前)。
  3. 这将继续增加,因为当这两个Runnable触发时,将创建4个,依此类推。

您还没有利用a

Runnable
可以多次发布到同一队列的事实,不必每次都创建一个新队列。如果要取消 *** 作,这是必不可少的,因为remove方法会
Handler
查找所有匹配的实例以从队列中删除。您可以尝试这样的方法:

private long EnabledAfter  = 300000; // 5 minutesprivate long DisabledAfter = 30000;  // 30 secondsprivate 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 methodpublic void stop_timers(){   Handler.removeCallbacks(Enabler);   Handler.removeCallbacks(Disabler);}//end method

我还添加了另一种方法,可以通过

Runnable
从队列中删除项目的所有实例来取消计时器 *** 作。

高温超导



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5489287.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存