在Android应用程序中执行备用逻辑

在Android应用程序中执行备用逻辑,android,Android,我需要在我的应用程序中每2秒闪烁一次LED。我已使用以下代码计算出打开和关闭LED的代码: Camera camera = Camera.open(); Parameters p = camera.getParameters(); p.setFlashMode(Parameters.FLASH_MODE_TORCH); camera.setParameters(p); camera.startPreview(); p.setFlashMode(Parameters.FLASH_MODE_OFF

我需要在我的应用程序中每2秒闪烁一次LED。我已使用以下代码计算出打开和关闭LED的代码:

Camera camera = Camera.open();
Parameters p = camera.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(p);
camera.startPreview();

p.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(p);
camera.startPreview();
现在,只要用户按下闪烁按钮,我就需要执行第一段代码2秒钟,然后执行第二段代码2秒钟。此外,我需要在用户按下“停止”按钮后立即停止执行此备用LED开关序列


任何想法,我如何在不使我的应用程序产生ANR的情况下实现这一点?

您可以使用线程来实现:

Camera camera = Camera.open();
Parameters p = camera.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(p);
camera.startPreview();

new Thread(){
    public void run(){
        try{
            Thread.sleep(2000);
        }catch(Exception ex){}

        runOnUiThread(new Runnable(){
            public void run(){
                p.setFlashMode(Parameters.FLASH_MODE_OFF);
                camera.setParameters(p);
                camera.startPreview();
            }
        });
    }
}.start();

可以使用
AsyncTasks
并使用
get
方法强制第二段代码“等待”第一段代码?考虑到2秒的等待时间?读取和
处理程序
延迟后处理程序
也看到了这一点,您应该通过测试并拥有使用
线程睡眠()的许可证。当Thread.sleep有意义时,有一些特殊情况。这不是其中之一。绝对没有必要。