отображать данные через каждые 10 секунд в Android

Это может помочь кому-то, если я попробовал несколько вышеперечисленных решений, прежде чем придумать свой собственный, который действительно работал для меня (другие не сделали этого)

  var sequence;
  objects.forEach(function(item) {
     if(sequence === undefined){
          sequence = doSomethingThatReturnsAPromise(item)
          }else{
          sequence = sequence.then(function(){
               return doSomethingThatReturnsAPromise(item)
                     }); 
                 }
        });
29
задан Janusz 27 January 2012 в 12:19
поделиться

6 ответов

Вероятно, самое простое, что можно сделать, это:

while(needToDisplayData)
{
    displayData(); // display the data
    Thread.sleep(10000); // sleep for 10 seconds
}

Также вы можете использовать таймер:

int delay = 1000; // delay for 1 sec. 
int period = 10000; // repeat every 10 sec. 
Timer timer = new Timer(); 
timer.scheduleAtFixedRate(new TimerTask() 
    { 
        public void run() 
        { 
            displayData();  // display the data
        } 
    }, delay, period); 
11
ответ дан Kiril 27 January 2012 в 12:19
поделиться

Существует также другой способ, который вы можете использовать для обновления пользовательского интерфейса через определенный промежуток времени. Вышеуказанные два варианта являются правильными, но в зависимости от ситуации вы можете использовать альтернативные способы обновления пользовательского интерфейса в определенный промежуток времени.

Сначала объявите один глобальный varialbe для Handler, чтобы обновить элемент управления пользовательского интерфейса из Thread, как показано ниже

Handler mHandler = new Handler();

Теперь создайте один поток и используйте цикл while для периодического выполнения задачи с использованием метода ожидания потока.

 new Thread(new Runnable() {
        @Override
        public void run() {
            // TODO Auto-generated method stub
            while (true) {
                try {
                    Thread.sleep(10000);
                    mHandler.post(new Runnable() {

                        @Override
                        public void run() {
                            // TODO Auto-generated method stub
                            // Write your code here to update the UI.
                        }
                    });
                } catch (Exception e) {
                    // TODO: handle exception
                }
            }
        }
    }).start();
59
ответ дан teedyay 27 January 2012 в 12:19
поделиться

Существует также еще один способ с помощью обработчика

final int intervalTime = 10000; // 10 sec
Handler handler = new Handler();
handler.postDelayed(new Runnable()  {   
 @Override
 public void run() {
    //Display Data here
   }
 }, intervalTime);
.
7
ответ дан Yogesh Rathi 27 January 2012 в 12:19
поделиться

Каждые 10 секунд автоматически обновляется экран вашего приложения или обновляется активность.

Метод создания внутри onCreate (), который я пробовал, этот код будет работать для меня

Thread t = new Thread() {
@Override
public void run() {
try {
  while (!isInterrupted()) {
    Thread.sleep(1000);
    runOnUiThread(new Runnable() {
      @Override
      public void run() {            
       //CALL ANY METHOD OR ANY URL OR FUNCTION or any view
      }
    });
  }
} catch (InterruptedException e) {
}
}
};t.start();
0
ответ дан Satheeshkumar Somu 27 January 2012 в 12:19
поделиться

Существует простой способ отображения некоторых данных через каждые 10 секунд.

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_launcher);
  ActionStartsHere();
}

public void ActionStartsHere() {
  againStartGPSAndSendFile();
}

public void againStartGPSAndSendFile() {
   new CountDownTimer(11000,10000) {
        @Override
        public void onTick(long millisUntilFinished) {
           // Display Data by Every Ten Second  
        }

        @Override
        public void onFinish() {
            ActionStartsHere();
        }
    }.start();
}   
4
ответ дан Nandagopal T 27 January 2012 в 12:19
поделиться

Андраху был на правильном пути с определением обработчика. Если у вас есть обработчик, который вызывает ваши функции обновления, вы можете просто задержать сообщение , отправленное обработчику, на 10 секунд.

Таким образом, вам не нужно запускать собственный поток или что-то подобное, что приведет к странным ошибкам, проблемам отладки и обслуживания.

Просто позвоните:

 Handler myHandler = new MyUpdateHandler(GUI to refresh); <- You need to define a own handler that simply calls a update function on your gui.
 myHandler.sendMessageDelayed(message, 10000);

Теперь ваша функция handleMessage будет вызываться через 10 секунд. Вы можете просто отправить другое сообщение в вашей функции обновления, заставляя весь цикл повторяться снова и снова

7
ответ дан Janusz 27 January 2012 в 12:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: