java – 如何在一段时间后重复运行一个线程
发布时间:2020-12-15 02:07:20 所属栏目:Java 来源:网络整理
导读:我想运行一个线程(在后台执行一些耗时的任务并且不更新UI)它只是从互联网下载一些文件而且它独立于UI. 我想在一段时间间隔后重复运行这个线程. 我怎么能这样做,我有类似下面的线程: boolean mResult =false;void onCreate(){ DownloadThread mDownloadThrea
我想运行一个线程(在后台执行一些耗时的任务并且不更新UI)它只是从互联网下载一些文件而且它独立于UI.
我想在一段时间间隔后重复运行这个线程. 我怎么能这样做,我有类似下面的线程: 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; } } 我是否需要使用Handler来实现此功能? 解决方法
选项1:
volatile boolean flag = true; public void run() { while(flag) { // Do your task try{ Thread.Sleep(interval); } catch(Exception e){ } } } 选项2: Timer timer = new Timer(); timer.scheduleAtFixedRate(new TimerTask() { @Override public void run() { // Do your task } },interval); 选项3: volatile boolean flag = true; public void someMethod(){ // Do your task try{ Thread.Sleep(interval); } catch(Exception e){ } if(flag) return; else someMethod(); } 选项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); 还有更多选择.我从未尝试过选项3和4.它只是出现在我的脑海里,我写道.如果我是你,我会使用1或2中的任何一个. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |