Java – how to run a thread repeatedly after a period of time
•
Java
I want to run a thread (perform some time-consuming tasks in the background and do not update the UI). It just downloads some files from the Internet and it is independent of the UI
I want to run this thread repeatedly after a time interval
How can I do this? I have threads like the following:
boolean mResult =false; void onCreate() { DownloadThread mDownloadThread = new DownloadThread(); mDownloadThread.start(); } class DownloadThread extends Thread implements Runnable { public void run() { // My download code mResult = result; } }
Do I need to use handler to do this?
Solution
Option 1:
volatile boolean flag = true; public void run() { while(flag) { // Do your task try{ Thread.Sleep(interval); } catch(Exception e){ } } }
Option 2:
Timer timer = new Timer(); timer.scheduleAtFixedRate(new TimerTask() { @Override public void run() { // Do your task } },interval);
Option 3:
volatile boolean flag = true; public void someMethod(){ // Do your task try{ Thread.Sleep(interval); } catch(Exception e){ } if(flag) return; else someMethod(); }
Option 4:
final Handler handler = new Handler(); volatile boolean flag = true; Class A implements Runnable{ public void run(){ // Do your Task } if(!flag) handler.postDelayed(a,interval); } A a = new A(); handler.postDelayed(a);
There are more options I've never tried options 3 and 4 It just appeared in my mind, I wrote If I were you, I would use either 1 or 2
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码