boolean removed = routeList.removeIf(node -> node.get(0).getName().contains(keyWord)); android.util.Log.d("TAGAA", "deleteWayPoint: 删除了吗? "+routeList); if (removed) { android.util.Log.d("TAGAA", "deleteWayPoint: 关键字 "+keyWord); BaiduNaviInitHelper.setCanSpeak(false); BaiduNaviManagerFactory.getRouteGuideManager().deleteViaNodes(); if (routeList != null) { List<BNRoutePlanNode> list = new ArrayList<>(); for (List<BNRoutePlanNode> planNodeList : routeList) { //planNodeList获取0是因为list中只有一条数据 list.add(planNodeList.get(0)); } BaiduNaviManagerFactory.getRouteGuideManager().addViaNodes(list); BaiduNaviManagerFactory.getCommonSettingManager().setViaPointCount(4); } showFullView(); isWayPoint = true; } else { speakWithoutFollowStep("抱歉,当前没有" + keyWord + "途经点"); } 帮我用异步写一下添加途径点那块
时间: 2024-02-14 10:07:50 浏览: 131
好的,您可以使用以下代码来异步执行添加途径点的操作:
```
new AsyncTask<Void, Void, Boolean>() {
@Override
protected void onPreExecute() {
// UI准备工作,例如显示加载框等
}
@Override
protected Boolean doInBackground(Void... voids) {
boolean removed = routeList.removeIf(node -> node.get(0).getName().contains(keyWord));
if (removed) {
BaiduNaviInitHelper.setCanSpeak(false);
BaiduNaviManagerFactory.getRouteGuideManager().deleteViaNodes();
if (routeList != null) {
List<BNRoutePlanNode> list = new ArrayList<>();
for (List<BNRoutePlanNode> planNodeList : routeList) {
list.add(planNodeList.get(0));
}
BaiduNaviManagerFactory.getRouteGuideManager().addViaNodes(list);
BaiduNaviManagerFactory.getCommonSettingManager().setViaPointCount(4);
}
isWayPoint = true;
return true;
} else {
return false;
}
}
@Override
protected void onPostExecute(Boolean result) {
// UI收尾工作,例如隐藏加载框等
if (result) {
showFullView();
} else {
speakWithoutFollowStep("抱歉,当前没有" + keyWord + "途经点");
}
}
}.execute();
```
这样,您的添加途径点的代码就会在后台线程中执行,不会阻塞主线程。在`onPreExecute()`方法中可以做一些UI的准备工作(例如显示加载框),在`doInBackground()`方法中执行添加途径点的操作,最后在`onPostExecute()`方法中处理添加途径点的结果并进行UI的收尾工作(例如隐藏加载框)。
阅读全文