Run loop every second java

后端 未结 5 1488
你的背包
你的背包 2020-12-29 14:54
int delay = 1000; // delay for 1 sec. 
int period = 10000; // repeat every 10 sec. 
Timer timer = new Timer(); 
timer.scheduleAtFixedRate(new TimerTask() 
    { 
            


        
5条回答
  •  星月不相逢
    2020-12-29 15:22

    You code is failed because you perform sleep in background thread but display data must be performed in UI thread.

    You have to run displayData from runOnUiThread(Runnable) or define handler and send message to it.

    for example:

    (new Thread(new Runnable()
            {
    
                @Override
                public void run()
                {
                    while (!Thread.interrupted())
                        try
                        {
                            Thread.sleep(1000);
                            runOnUiThread(new Runnable() // start actions in UI thread
                            {
    
                                @Override
                                public void run()
                                {
                                    displayData(); // this action have to be in UI thread
                                }
                            });
                        }
                        catch (InterruptedException e)
                        {
                            // ooops
                        }
                }
            })).start(); // the while thread will start in BG thread
    

提交回复
热议问题