29

我必须每 10 秒后显示一些数据。谁能告诉我该怎么做?

4

6 回答 6

59

您还可以使用另一种方法在特定时间间隔内更新 UI。以上两个选项都是正确的,但取决于您可以使用替代方法在特定时间间隔更新 UI 的情况。

首先为 Handler 声明一个全局变量以从 Thread 更新 UI 控件,如下所示

Handler mHandler = new Handler();

现在创建一个 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();
于 2010-03-29T06:50:59.360 回答
12

可能最简单的做法是:

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); 
于 2010-03-29T04:24:27.750 回答
7

使用 Handler 还有另一种方法

final int intervalTime = 10000; // 10 sec
Handler handler = new Handler();
handler.postDelayed(new Runnable()  {   
 @Override
 public void run() {
    //Display Data here
   }
 }, intervalTime);
于 2014-03-07T05:54:42.353 回答
7

Andrahu 在定义处理程序方面走在了正确的轨道上。如果您有一个调用更新函数的处理程序,您可以简单地将发送到处理程序的消息延迟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 秒后被调用。您可以在更新功能中发送另一条消息,导致整个周期一遍又一遍地运行

于 2010-03-29T07:44:25.287 回答
4

有一种简单的方法可以在每 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();
}   
于 2014-03-07T05:43:44.357 回答
0

每 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();
于 2015-12-30T05:05:16.890 回答