gpt4 book ai didi

java - 如何在一段时间后重复运行线程

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:47:48 24 4
gpt4 key购买 nike

我想运行一个线程(它在后台执行一些耗时的任务并且不更新 UI)它只是从 Internet 下载一些文件并且它独立于 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
}

}, 0, 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 中的任何一个。

关于java - 如何在一段时间后重复运行线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15406240/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com