在Android中每10秒钟显示数据
我必须每隔10秒后显示一些数据。 谁能告诉我该怎么做?
还有一种方法可以用来在特定的时间间隔更新UI。 以上两个选项是正确的,但取决于您可以使用替代方法在特定时间间隔更新UI的情况。
首先声明Handler的一个全局variables来更新线程的UI控件,如下所示
Handler mHandler = new Handler();
现在创build一个Thread并使用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();
可能最简单的事情是这样的:
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);
Andrahu正处于正确的轨道上,定义了一个处理程序。 如果你有一个调用你的更新函数的处理程序,你可以简单地延迟发送到处理程序的消息 10秒钟。
这样你就不需要开始自己的线程或类似的东西,这会导致奇怪的错误,debugging和维护问题。
只要打电话:
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秒后被调用。 您可以在更新函数中发送另一条消息,导致整个周期反复运行
使用Handler还有另一种方法
final int intervalTime = 10000; // 10 sec Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { //Display Data here } }, intervalTime);
有一个简单的方法,每隔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(); }
每10秒自动刷新你的应用程序屏幕或刷新活动
创build里面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();