Android处理程序缩短延迟?

时间:2018-01-27 01:15:20

标签: java android

我正在创建一个按钮,在使用处理程序的延迟功能抓取两个相等的光值持续2秒后停止光传感器。它起初工作正常但是当我再次按下按钮时,延迟似乎变得越来越短,最终根本不会发生。

stateLx.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        onResume();
        stateLx.setEnabled(false);
        doub2x.setText(Double.toString(0));
        doub1x.setText(Double.toString(0));

        //Stabilization Handlers
        m_handler = new Handler();
        m_handlerTask = new Runnable() {
            public void run() {

                doub1 = movingValue[0];
                doub1x.setText(Double.toString(doub1));
                m_handler.postDelayed(this, 1000);

            }
        };

        m2_handler = new Handler();
        m2_handlerTask = new Runnable() {
            public void run() {

                doub2 = movingValue[0];
                doub2x.setText(Double.toString(doub2));
                m2_handler.postDelayed(this, 2000);

                if (doub1 != doub2) {
                    instructions.setText("unequal");
                } else {
                    instructions.setText("equal");
                    getInitialLightValue();
                    reCalculateInitial();
                    beerLambert(volValues, lxValuesNew);

                }

            }
        };

        //Handlers for stabilizer
        m_handler.postDelayed(m_handlerTask, 1000);
        m2_handler.postDelayed(m2_handlerTask, 3000);
        lame.setText(Double.toString(absorbValues[0]));
        stateLx.setEnabled(true);


    }

});

我已尝试将处理程序放入onclick函数内外,并在按下按钮开始时包含onResume()函数,但我没有运气。我的代码有问题吗?

1 个答案:

答案 0 :(得分:1)

您不断重新创建处理程序和Runnables。这是问题的一部分,您应该在重新开始之前检查您是否已经进行了轮询。

另外,这是一个旁注 - 但是调用生命周期方法很奇怪,比如onResume(),因为它会调用super。