繁体   English   中英

在方法运行时如何更新值-Java

[英]How to update values while method is running - Java

所以我有一个非常奇怪的问题,我根本无法理解为什么它不起作用。 我正在构建一个频闪灯作为我的应用程序的一部分,并创建了一个单独的Strobelight类。 当我调用turnOn方法或update方法时,间隔永远不会改变。 我想这将使使用某些代码解释起来更容易:

public class Strobelight{

private int delayOn, delayOff;

public void turnStrobeOn(){...}

public void update(int a_delayOn, int a_delayOff){
    delayOn = a_delayOn;
    delayOff = a_delayOff;
}

public void turnOn(int a_delayOn, int a_delayOff){
    delayOn = a_delayOn;
    delayOff = a_delayOff;
    this.turnStrobeOn();
}

根据频闪灯是否已亮起,调用这些方法之一以指定的间隔更改频闪灯的点亮或仅更改间隔。

在将Thread.sleep()用于打开或关闭手电筒时,应用程序仅使用最小可能的间隔,而不是将间隔更改为自定义的间隔

编辑:这是线程代码,和打开手电筒的代码

公共无效turnStrobeOn(){

    for ( int i = 0; i < 3; i++){

        isInCycle = true;

        cam = Camera.open();
        Parameters p = cam.getParameters();
        p.setFlashMode(Parameters.FLASH_MODE_TORCH);
        cam.setParameters(p);
        cam.startPreview(); // the flashlight is now on
        lightIsOn = true;
        new Thread(new Runnable() {
            public void run() {
                try {
                    Thread.sleep(delayOn);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }).start();

        cam.stopPreview();
        cam.release();
        lightIsOn = false;
        new Thread(new Runnable() {
            public void run() {
                try {
                    Thread.sleep(delayOff);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }).start();

    } //end of for loop

        isInCycle = false;  

} // end of turnStrobeOn

您可能想在此获得其他人的建议,我最大的猜测是您不能对sleep()如此具体。 同样不要忘记为此使用毫秒。 我建议使用android处理程序并为此进行postDelayed而不是休眠。

如何在Android中暂停/休眠线程或进程?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM