我正在使用Arduino和Android Java构建项目,我构建了一个自动跟踪机器人所有者编写的特定地图的机器人。
要自动运行地图,用户必须指定一小时开始和一小时停止机器人跟踪映射,并且他需要指定一个间隔,因为地图将不时运行。
所有这些代码都在后台服务中运行。
我创建了一个Handler来检查当前小时是否等于存储在arraylist中的一些小时数。我的应用程序在找到匹配项时启动此功能:
public void startEvent(String getMapping, String getReplayInterval, String getReplayHourEnd, final int getRobotId, final String getMapName) {
eventHandler = new Handler();
eventHandler.postDelayed(new Runnable() {
@Override
public void run() {
if (count < getMoves.length) {
String[] getMoveObject = getMoves[count++].split("/");
String getMove = getMoveObject[0];
String getObject = getMoveObject[1];
moveRobot(getMove, Boolean.valueOf(getObject), getRobotId, getMapName);
delay = 1000;
}
if (count == getMoves.length) {
moveRobot("stop", false, getRobotId, getMapName);
count = 0;
//Interval hour
delay = TimeUnit.SECONDS.toMillis(t);
}
if (hour.equals(splitEndHour[0]) && minute.equals(splitEndHour[1]) && second.equals(splitEndHour[2])) {
//Stop the handler
moveRobot("stop", false, getRobotId, getMapName);
eventHandler.removeCallbacksAndMessages(this);
}
eventHandler.postDelayed(this, delay);
}
}, 1000);
}
我的问题是当我尝试在当前小时达到用户选择停止机器人运行映射的小时时停止处理程序。
我试图使用:
eventHandler.removeCallbacksAndMessages(this);
但代码一直在运行,我需要在代码上更改哪些内容以确保删除处理程序并清除所有消息?
谢谢。