Java Android:Handler.postdayed不';停不下来
我无法停止下面示例中的handler.postDelayed。它在1秒后继续工作,在开关关闭时不会停止:Java Android:Handler.postdayed不';停不下来,java,android,handler,runnable,Java,Android,Handler,Runnable,我无法停止下面示例中的handler.postDelayed。它在1秒后继续工作,在开关关闭时不会停止: mySwitch.setChecked(false); mySwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonV
mySwitch.setChecked(false);
mySwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
final Handler handler = new Handler();
final Runnable r = new Runnable() {
public void run() {
myClient.SendData("AA");
handler.postDelayed(this, 1000);
}
};
if (isChecked){
handler.postDelayed(r, 1000);
}
else {
handler.removeCallbacks(r);
}
}
});
并且在开关关闭时不会停止:
mySwitch.setChecked(false);
mySwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
final Handler handler = new Handler();
final Runnable r = new Runnable() {
public void run() {
myClient.SendData("AA");
handler.postDelayed(this, 1000);
}
};
if (isChecked){
handler.postDelayed(r, 1000);
}
else {
handler.removeCallbacks(r);
}
}
});
这是因为每次调用回调时都要实例化r。移动
final Runnable r = new Runnable() {
public void run() {
myClient.SendData("AA");
handler.postDelayed(this, 1000);
}
};
在回调之外。在方法或类的范围内