Мне нужно отображать некоторые данные каждые 10 секунд. Может ли кто-нибудь сказать мне, как это сделать?
Отображать данные каждые 10 секунд в Android
Ответ 1
Существует и другой способ, который вы можете использовать для обновления пользовательского интерфейса в определенный промежуток времени. Выше двух параметров верны, но в зависимости от ситуации вы можете использовать альтернативные способы обновления пользовательского интерфейса в определенный промежуток времени.
Сначала объявите один глобальный varialbe для обработчика, чтобы обновить элемент управления пользовательского интерфейса из потока, например ниже
Handler mHandler = new Handler();
Теперь создайте один поток и используйте цикл while, чтобы периодически выполнять задачу, используя метод sleep для потока.
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();
Ответ 2
Возможно, самое простое дело в том, что:
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);
Ответ 3
Андраху был на правильном пути с определением обработчика. Если у вас есть обработчик, который вызывает ваши функции обновления, вы можете просто задержать сообщение, отправленное обработчику в течение 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 секунд. Вы можете просто отправить другое сообщение в свою функцию обновления, заставив весь цикл работать снова и снова
Ответ 4
Существует также другой способ с помощью Handler
final int intervalTime = 10000; // 10 sec
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
//Display Data here
}
}, intervalTime);
Ответ 5
Существует простой способ отображения некоторых данных каждые 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();
}
Ответ 6
Каждые 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();