2011-12-25 4 views
0

私のAndroidプロジェクトでは問題があります。Androidでブロック中(真)にする方法

私は1秒ごとに何かしたいと思いますが、問題は1秒間に何か他のことがあるということです。

ループをwait(1000)と内部で作成しようとしましたが、このループが他のすべての命令をブロックするという問題があります。

このための回避策/解決策は何ですか?

答えて

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(); 
     } 
    }; 
+0

は、あなたが私にこのabaut詳細を記入してくださいすることができ、私は私のコードの一部であり、ここで :-)アンドロイド研究開発を中beginer午前、あなたの答えをありがとう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; \t \t ValeursCapteur capteur =新しいValeursCapteur(nom、x、0、0); \t \t capteurBdd.insertValeursCapteur(capteur); \t \t Log.i(null、 "GPS =" + x);\t \t \t \t} \t \tキャッチ(InterruptedExceptionあるのEX){ \t \t} \t \t}} ' –

+0

私の編集を参照してください。 'findViewById'では、任意のコントロールやレイアウトを使用できます。 –

+0

Tomislaveさんありがとうございますが、私はこの行に問題があります: 'findViewById(R.id.mainView).postDelayed(predrePhotoRunnable、1000);' mainViewとは何ですか? は、あなたの助けのためにどうもありがとうございます –

0

アンドロイドにはasync tasksを使用できます。

+0

ありがとう、私はこれを見ていきます。 'ます。public void PrendrePhoto(){ \t \t文字列: –

関連する問題