gpt4 book ai didi

Android - 在计时器内重复运行线程

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:31:36 26 4
gpt4 key购买 nike

首先,我什至无法选择要使用的方法,我现在读了几个小时,有人说使用“Handlers”,有人说使用“Timer”。这是我试图实现的目标:

在首选项中,有一个设置(复选框)可以启用/禁用重复作业。当该复选框被选中时,计时器应该开始工作并且线程应该每 x 秒执行一次。由于未选中复选框,计时器应该停止。

这是我的代码:

检查复选框是否被选中,如果被选中,'refreshAllServers' void 将被执行,它用计时器完成工作。

boolean CheckboxPreference = prefs.getBoolean("checkboxPref", true);
if(CheckboxPreference == true) {
Main main = new Main();
main.refreshAllServers("start");
} else {
Main main = new Main();
main.refreshAllServers("stop");
}

执行计时器作业的 refreshAllServers void:

public void refreshAllServers(String start) {

if(start == "start") {

// Start the timer which will repeatingly execute the thread

} else {

// stop the timer

}

下面是我执行线程的方式:(没有计时器也能正常工作)

Thread myThread = new MyThread(-5);
myThread.start();

我试过什么?

我尝试了我可以从 Google 看到的任何示例(处理程序、计时器),它们都不起作用,我设法启动了一次计时器,但停止它不起作用。我在研究中看到的最简单易懂的代码是这样的:

new java.util.Timer().schedule( 
new java.util.TimerTask() {
@Override
public void run() {
// your code here
}
},
5000
);

最佳答案

只需简单地使用下面的 fragment

private final Handler handler = new Handler();
private Runnable runnable = new Runnable() {
public void run() {
//
// Do the stuff
//

handler.postDelayed(this, 1000);
}
};
runnable.run();

停止使用

handler.removeCallbacks(runnable);

应该可以解决问题。

关于Android - 在计时器内重复运行线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11639251/

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