Falha ao obter o Place específico do PlaceBuffer

Eu tenho um problema estranho com um lugar específico. Qualquer ideia ?

Esse código está funcionando bem, mas, para um local (escolhido acidentalmente devido ao início do aaa - apenas para teste), ele falha ao obter o objeto Place do buffer. Até uma consulta foi bem-sucedida (log: PlaceAutocompleteAdapt ﹕ Consulta concluída. Recebeu 5 previsões.) Infelizmente, ele travou o aplicativo. Isso torna a API muito perigosa. O que mais deve ser tratado no try catch block com certeza?

        addressAutocompleteText.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            /*
             Retrieve the place ID of the selected item from the Adapter.
             The adapter stores each Place suggestion in a PlaceAutocomplete object from which we
             read the place ID.
              */
            final PlaceAutocompleteAdapter.PlaceAutocomplete item = ((MainActivity) getActivity()).mAdapter.getItem(position);
            final String placeId = String.valueOf(item.placeId);
            Log.i(TAG, "Autocomplete item selected: " + item.description);

            /* Issue a request to the Places Geo Data API to retrieve a Place object with additional details about the place. */
            PendingResult<PlaceBuffer> placeResult = Places.GeoDataApi.getPlaceById(((MainActivity) getActivity()).mGoogleApiClient, placeId);
            placeResult.setResultCallback(new ResultCallback<PlaceBuffer>() {
                @Override
                public void onResult(PlaceBuffer places) {
                    if (!places.getStatus().isSuccess()) {
                        // Request did not complete successfully
                        Log.e(TAG, "Place query did not complete. Error: " + places.getStatus().toString());
                        places.release();
                        return;
                    }

                    try {
                        // Get the Place object from the buffer.
                        final Place place = places.get(0); // Throws IllegalStateException
                        if (null != place) {
                            coordinate = new Coordinate(place.getLatLng().latitude, place.getLatLng().longitude);
                        }
                    } catch (IllegalStateException e) {
                        Log.w(TAG, "Fail to get place or its coordinates");
                    }

                    places.release();
                }
            });
//                hideKeyboard(addressAutocompleteText);

            Log.i(TAG, "Called getPlaceById to get Place details for " + item.placeId);
        }
    });

REGISTRO:

Starting autocomplete query for: aaa
06-05 08:05:29.618    6403-7777/...I/PlaceAutocompleteAdapt﹕ Query completed. Received 5 predictions.
06-05 08:05:39.248    6403-6403/...I/FavoriteLocationCreateFragment﹕ Autocomplete item selected: AAA Auto A.s., Zlín, Česká republika
06-05 08:06:01.278    6403-6403/...I/FavoriteLocationCreateFragment﹕ Called getPlaceById to get Place details for ChIJcYm-YVpzE0cR-OIfKj2KTKc
06-05 08:30:46.823  19727-19727/... D/AndroidRuntime﹕ Shutting down VM
06-05 08:30:46.833  19727-19727/... E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: ..., PID: 19727
    java.lang.IllegalStateException
            at com.google.android.gms.common.internal.zzv.zzP(Unknown Source)
            at com.google.android.gms.common.data.zzc.zzaB(Unknown Source)
            at com.google.android.gms.common.data.zzc.<init>(Unknown Source)
            at com.google.android.gms.location.places.internal.zzq.<init>(Unknown Source)
            at com.google.android.gms.location.places.internal.zzo.<init>(Unknown Source)
            at com.google.android.gms.location.places.PlaceBuffer.get(Unknown Source)
            at ....FavoriteLocationCreateFragmentO que é o PlaceAutocomplete? É possível que você esteja recebendo IDs ruins a partir daí. Tentei testar o ID da sua mensagem de log "ChIJcYm-YVpzE0cR-OIfKj2KTKc" e não recebo nenhum resultado de volta. Parece que não há lugar com esse ID. Nesse caso, a API fornece um buffer local com zero resultados dentro dele. Se você ligar para places.get (0), está tentando recuperar algo que não existe. O problema com essa teoria é que places.getStatus (). IsSuccess () deve retornar false nesse caso, que você já verifica. Considere o registro de places.getCount () para ajudar na depuração.1.onResult(FavoriteLocationCreateFragment.java:129)
            at ....FavoriteLocationCreateFragmentO que é o PlaceAutocomplete? É possível que você esteja recebendo IDs ruins a partir daí. Tentei testar o ID da sua mensagem de log "ChIJcYm-YVpzE0cR-OIfKj2KTKc" e não recebo nenhum resultado de volta. Parece que não há lugar com esse ID. Nesse caso, a API fornece um buffer local com zero resultados dentro dele. Se você ligar para places.get (0), está tentando recuperar algo que não existe. O problema com essa teoria é que places.getStatus (). IsSuccess () deve retornar false nesse caso, que você já verifica. Considere o registro de places.getCount () para ajudar na depuração.1.onResult(FavoriteLocationCreateFragment.java:117)
            at com.google.android.gms.common.api.AbstractPendingResult$CallbackHandler.deliverResultCallback(Unknown Source)
            at com.google.android.gms.common.api.AbstractPendingResult$CallbackHandler.handleMessage(Unknown Source)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:145)
            at android.app.ActivityThread.main(ActivityThread.java:5832)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

questionAnswers(4)

yourAnswerToTheQuestion