2011-12-25 2 views
0

У меня проблема с litle в моем проекте Android.Как сохранить (правда) от блокировки в Android

Я хотел бы что-то делать каждые 1 секунду, но проблема в том, что у меня есть что-то еще, что нужно сделать между этими 1сек.

Я попытался сделать петлю while (true) с wait(1000) внутри, но проблема в том, что этот цикл блокирует все остальные инструкции.

Каким будет обходной путь/решение для этого?

ответ

2

Я бы рассмотрел сценарий с потоками. Если вы работаете с обновлениями пользовательского интерфейса, вы можете использовать postDelayed, чтобы вы могли обновлять свой интерфейс с помощью Runable. Вы также можете вызвать 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 в андроиде developping :-) Вот это часть моего кода: 'общественной пустота 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; \t \t ValeursCapteur capteur = new ValeursCapteur (nom, x, 0, 0); \t \t capteurBdd.insertValeursCapteur (capteur); \t \t Log.i (null, "GPS =" + x); \t \t try { \t \t wait (3000); \t \t} \t \t улов (InterruptedException ех) { \t \t} \t \t}} ' –

+0

Смотрите мой Edit. Для 'findViewById' вы можете использовать любой элемент управления или макет. –

+0

Большое спасибо Tomislave, но у меня есть проблема в этой строке: 'findViewById (R.id.mainView) .postDelayed (predrePhotoRunnable, 1000);' Что такое mainView? Большое вам спасибо за вашу помощь –

0

Вы можете использовать async tasks в android.

+0

Спасибо, Тень, я посмотрю на это. –