Android:定时器/延迟替代

时间:2011-06-08 19:26:29

标签: java android timer delay

我想让图像在60毫秒内可见,然后不可见,然后我想要另一张图像做同样的事情......依此类推。 我不认为我正在使用计时器..因为当我运行应用程序时,两个图像同时打开,并且当我按下使用此功能的按钮时不会消失。

以下是一些示例代码..

timer.schedule(new TimerTask()
        {
            @Override
            public void run()
            {
                LED_1.setVisibility(View.VISIBLE);
                                    // LED_1 is an ImageView
            }
        }, 60);
        LED_1.setVisibility(View.INVISIBLE);

timer2.schedule(new TimerTask()
        {
            @Override
            public void run()
            {
                LED_2.setVisibility(View.VISIBLE);
                                    // LED_2 is an ImageView
            }
        }, 60);
        LED_2.setVisibility(View.INVISIBLE);

还有另一种选择吗?我试过像......这样的例子 Android app How to delay your Service start on phone boot

http://www.roseindia.net/java/beginners/DelayExample.shtml

但它没有做我想要的......

我做错了什么?或者有其他方法可以做到这一点吗?

感谢。

-Faul

Good.Dima ..

            int delayRate = 60;
        final Runnable LED_1_On = new Runnable()
    {
        public void run()
        {
            LED_1.setVisibility(View.VISIBLE);
                    handler.postDelayed(this, delayRate);

        }
    };

    handler.postDelayed(LED_1_On, delayRate);

    final Runnable LED_2_On  = new Runnable()
    {
        public void run()
        {
            LED_1.setVisibility(View.INVISIBLE);
            LED_2.setVisibility(View.VISIBLE);
                    handler3.postDelayed(this, delayRate);

        }
    };

    handler.postDelayed(LED_2_On, delayRate);

3 个答案:

答案 0 :(得分:2)

您可以尝试使用Handler,它将smth发布到UI线程中,它可以延迟发布  postDelayed

答案 1 :(得分:0)

问题在于两个计时器都有60毫秒的延迟,并且在两者的运行方法中,您都将它们设置为可见。您需要更改其中一个运行方法以将其设置为不可见。

答案 2 :(得分:0)

你正在创建两个事件,从现在开始都会发射60毫秒。

您可以设置第一个事件在60毫秒内触发,第二个事件在120毫秒内触发,或者让第一个事件触发第一个事件从第一个事件开始提交60毫秒。