Java 不重复的可运行回调
我想删除以前的回调,问题是mRunnable调用只调用一次,它不会重复我正在做的事情Java 不重复的可运行回调,java,android,Java,Android,我想删除以前的回调,问题是mRunnable调用只调用一次,它不会重复我正在做的事情 private Runnable mRunnable = new Runnable() { @Override public void run() { System.out.println("Test ...."); } }; @Override public void onJoystickContinu
private Runnable mRunnable = new Runnable() {
@Override
public void run() {
System.out.println("Test ....");
}
};
@Override
public void onJoystickContinue(Boolean isContinue) {
if (isContinue == true) {
if (mHandler != null) {
mHandler.removeCallbacks(mRunnable);
}
mHandler = new Handler();
mHandler.postDelayed(mRunnable, 500);
} else {
if (mHandler != null) {
mHandler.removeCallbacks(mRunnable);
}
}
}
这里的问题是,在创建封闭类时,
mRunnable
只创建一次。Runnable
实例运行并转换到“stopped”状态。因此,当您稍后重用它时,处理程序会尝试运行它,但它已经停止。这里的一个解决方案是每次重新启动时创建一个新的可运行实例,而不是反复重用同一个实例。每次创建一个新的可运行实例,而不是反复重用同一个实例。@thomas你知道如何创建一个新对象并将其分配给变量吗?我想这就是我在第一次中所做的“是的。这里的问题是,当您创建包含类的对象时,行只执行一次。您需要重新排列您的代码,以便它在每次发布到处理程序时都会发生。