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

Posted

技术标签:

【中文标题】如何在方法运行时更新值 - Java【英文标题】:How to update values while method is running - Java 【发布时间】:2014-02-06 01:46:21 【问题描述】:

所以我遇到了一个非常奇怪的问题,我根本无法理解为什么它不起作用。我正在构建一个频闪灯作为我的应用程序的一部分,并创建了一个单独的频闪灯类。当我调用 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() 以打开或关闭手电筒时只使用最小的可能间隔

,而不是将间隔更改为自定义的间隔

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

public void 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

【问题讨论】:

我认为您需要发布您的线程代码而不是此类代码。 好的,这就完成了。我仍然对此感到困惑,因为我正在更改它的值(我测试以确保)所以我不明白为什么它不会使用新值 【参考方案1】:

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

How to pause / sleep thread or process in Android?

【讨论】:

完美,android 处理程序发挥了重要作用并按预期工作,谢谢!

以上是关于如何在方法运行时更新值 - Java的主要内容,如果未能解决你的问题,请参考以下文章

在运行时从 db 枚举为 jpa 枚举生成值

java 运行时修改注解值的方法。注释值修改

在mongodb中保存或更新文档时如何防止更新“updatedAt”字段?

如何将UpdateSourceTrigger的值移交给UserControl或在运行时更新它?

java如何在运行时解析隐藏方法

运行方法时更新 qt gui