Android任务未使用Places API完成
我试图从PlacesAPI文档中复制代码,但是,虽然代码似乎可以工作,但任务永远不会返回成功或完成,也不会执行该代码块。这是我的代码,但它与Google文档基本相同,只是做了一些更改Android任务未使用Places API完成,android,android-asynctask,task,google-places-api,Android,Android Asynctask,Task,Google Places Api,我试图从PlacesAPI文档中复制代码,但是,虽然代码似乎可以工作,但任务永远不会返回成功或完成,也不会执行该代码块。这是我的代码,但它与Google文档基本相同,只是做了一些更改 public void refreshLocation(TextView textView, PlacesClient placesClient) { // Use fields to define the data types to return. textView.setText
public void refreshLocation(TextView textView, PlacesClient placesClient) {
// Use fields to define the data types to return.
textView.setText("Loading...");
List<Place.Field> placeFields = Collections.singletonList(Place.Field.NAME);
// Use the builder to create a FindCurrentPlaceRequest.
FindCurrentPlaceRequest request = FindCurrentPlaceRequest.newInstance(placeFields);
textView.setText("Starting task . . .");
Task<FindCurrentPlaceResponse> placeResponse = placesClient.findCurrentPlace(request);
textView.setText("Task set . . .");
placeResponse.addOnCompleteListener(task -> {
if (task.isSuccessful()) {
Double likelihood = 0.0;
String name = "";
FindCurrentPlaceResponse response = task.getResult();
for (PlaceLikelihood placeLikelihood : response.getPlaceLikelihoods()) {
textView.setText("Task successful");
if (placeLikelihood.getLikelihood() > likelihood) {
likelihood = placeLikelihood.getLikelihood();
name = placeLikelihood.getPlace().getName();
}
}
if (likelihood != 0.0) {
likelihood = likelihood * 100;
textView.setText(String.format("You are at {}. \n {}% accurate", name, likelihood));
} else {
textView.setText("Error: No Location Found.");
}
} else {
Exception exception = task.getException();
if (exception instanceof ApiException) {
ApiException apiException = (ApiException) exception;
Log.e(TAG, "Place not found: " + apiException.getStatusCode());
}
}
});
}
public void refreshLocation(TextView TextView,PlacesClient PlacesClient){
//使用字段定义要返回的数据类型。
setText(“加载…”);
List placeFields=Collections.singletonList(Place.Field.NAME);
//使用生成器创建FindCurrentPlaceRequest。
FindCurrentPlaceRequest=FindCurrentPlaceRequest.newInstance(placeFields);
setText(“开始任务…”);
Task placeResponse=placesClient.findCurrentPlace(请求);
setText(“任务集…”);
placeResponse.addOnCompleteListener(任务->{
if(task.issusccessful()){
双似然=0.0;
字符串名称=”;
FindCurrentPlaceResponse=task.getResult();
for(placelikelike:response.getplacelikelikelihoods()){
setText(“任务成功”);
if(placelikeligence.getlikeligence()>likeligence){
似然=placelikelike.getlikelike();
name=place.getPlace().getName();
}
}
如果(可能性!=0.0){
可能性=可能性*100;
textView.setText(String.format(“您在{}.\n{}%准确”,名称,可能性));
}否则{
setText(“错误:找不到位置”);
}
}否则{
Exception=task.getException();
if(ApiException的异常实例){
ApiException=(ApiException)异常;
Log.e(标记“未找到位置:”+apiException.getStatusCode());
}
}
});
}
我是否在开始这项任务时遗漏了什么?有什么方法可以启动或执行它吗?即使谷歌文档不使用AsyncTask,这是不是也可以通过AsyncTask解决的问题?这里也一样。使用自动完成似乎也不会返回任何内容。