每 x 毫秒执行一次代码,可更改
code to be executed every x milliseconds, changeable
我有一段代码每 x 毫秒执行一次,其中 x 在应用程序生命周期中是可变的。
现在我使用处理程序的 postDelayed 函数,但是当延迟发生变化时我无法处理这种情况。
handler.postDelayed(new Runnable() {
@Override
public void run() {
// do some staff
handler.postDelayed(this, x);
}
}, x);
我的问题是在应用程序的其他部分 x
值可以改变,我需要在改变后立即执行 run
函数中的代码,并继续无限执行延迟代码(新值为 x
)。
保存对 Runnable
的引用并将延迟保持为 class 变量,如下所示:
private Long x = 1000L;
private Runnable r = new Runnable() {
@Override
public void run() {
// do some staff
handler.postDelayed(this, x);
}
}
然后
handler.post(r);
开始吧。
然后创建一个 setter and getter for x 来处理更改:
setX(Long: value){
if(x != value){
x = value
handler.removeCallbacks(r);
//run immediately
handler.post(r);
}
}
getX(){ return x };
如何创建新的 class 将 x
作为静态变量
class DelayInterval {
public static int x = 1000;
}
然后打电话给你的 postDelay
handler.postDelayed(new Runnable() {
@Override
public void run() {
// do some staff
handler.postDelayed(this, DelayInterval.x);
}
}, DelayInterval.x);
并且在您的代码中的某处,您可以更改 x
DelayInterval.x = 3000;
我有一段代码每 x 毫秒执行一次,其中 x 在应用程序生命周期中是可变的。
现在我使用处理程序的 postDelayed 函数,但是当延迟发生变化时我无法处理这种情况。
handler.postDelayed(new Runnable() {
@Override
public void run() {
// do some staff
handler.postDelayed(this, x);
}
}, x);
我的问题是在应用程序的其他部分 x
值可以改变,我需要在改变后立即执行 run
函数中的代码,并继续无限执行延迟代码(新值为 x
)。
保存对 Runnable
的引用并将延迟保持为 class 变量,如下所示:
private Long x = 1000L;
private Runnable r = new Runnable() {
@Override
public void run() {
// do some staff
handler.postDelayed(this, x);
}
}
然后
handler.post(r);
开始吧。
然后创建一个 setter and getter for x 来处理更改:
setX(Long: value){
if(x != value){
x = value
handler.removeCallbacks(r);
//run immediately
handler.post(r);
}
}
getX(){ return x };
如何创建新的 class 将 x
作为静态变量
class DelayInterval {
public static int x = 1000;
}
然后打电话给你的 postDelay
handler.postDelayed(new Runnable() {
@Override
public void run() {
// do some staff
handler.postDelayed(this, DelayInterval.x);
}
}, DelayInterval.x);
并且在您的代码中的某处,您可以更改 x
DelayInterval.x = 3000;