如何在Android中阻止while(true)

时间:2011-12-25 13:50:39

标签: android while-loop blocking

我的Android项目中存在小问题。

我想每1秒钟做一些事情,但问题是我在那些1秒之间还有别的事情要做。

我尝试在while (true)内部设置wait(1000)循环,但问题是此循环会阻止所有其他指令。

对此有什么解决方法/解决方案?

2 个答案:

答案 0 :(得分:2)

我会考虑一个线程场景。如果您正在使用UI更新,则可以使用postDelayed,以便可以使用Runable更新UI。您也可以在Runable中调用Runable。

View.postDelayed(new Runnable() {
            public void run() {
                // do work
            }
        }, 1000);

编辑:根据您的评论,这就是您可以重复调用您的函数的方法。

public void PrendrePhoto() {
        String nom = "CameraPhoto";
        double x;
        camera = Camera.open();
        capteurBdd = new CapteursBDD(null);
        while (true) {
            camera.takePicture(null, null, null);
            x = 10;
            ValeursCapteur capteur = new ValeursCapteur(nom, x, 0, 0);
            capteurBdd.insertValeursCapteur(capteur);
            Log.i(null, "GPS = " + x);
            try {
                findViewById(R.id.mainView).postDelayed(predrePhotoRunnable, 1000);
            } catch (InterruptedException ex) {
            }
        }
    }

    private Runnable predrePhotoRunnable = new Runnable() {
        public void run() {
            PrendrePhoto();
        }
    };

答案 1 :(得分:0)

您可以在android中使用async tasks