如何在Android中阻止(true)阻止

问题描述:

我的Android项目中有一个小问题。如何在Android中阻止(true)阻止

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

我试图做一个while (true)循环与wait(1000)里面,但问题是,此循环阻止所有其他指令。

这将是一个解决方法/解决方案是什么?

我会考虑一个线程场景。如果您正在使用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(); 
     } 
    }; 
+0

谢谢您的回答,您可以请给我abaut更多细节,我在android系统的深化发展一个beginer :-) 这里是我的代码的一部分: '公共无效PrendrePhoto(){ \t \t字符串nom =“CameraPhoto”; \t \t double x; \t \t camera = Camera.open(); \t \t capteurBdd = new CapteursBDD(null); \t \t while(true){ \t \t camera.takePicture(null,null,null); \t \t x = 10; ValeursCapteur capteur = new ValeursCapteur(nom,x,0,0); \t \t capteurBdd.insertValeursCapteur(capteur); \t \t Log.i(null,“GPS =”+ x); (3000); \t \t尝试{ \t \t等待(3000); \t \t} \t \t赶上(InterruptedException的前){ \t \t} \t \t}}' – 2011-12-25 14:05:20

+0

见我的编辑。对于'findViewById',你可以使用任何控件或布局。 – 2011-12-25 14:12:16

+0

非常感谢Tomislave,但是我对这行有一个问题:'findViewById(R.id.mainView).postDelayed(predrePhotoRunnable,1000);' 什么是mainView? 非常感谢你的帮助 – 2011-12-25 14:16:09

您可以在android中使用async tasks

+0

谢谢Shadow,我会看看这个。 – 2011-12-25 14:05:53