windy1/google-places-api-java

Problem running getNearbyPlacesRankedByDistance multiple times

Opened this issue · 2 comments

Hi,
I'm trying to use your library in my project and encounters in following issue:
i can't run the function getNearbyPlacesRankedByDistance more then two times.
Here is my function:

public void SearchPlaces(Context ctx)
{
    new Thread(new Runnable() {
        public void run() {
            List<Place> places=null;
            try {
                Log.i("MyApp", "search started");
                places = client.getNearbyPlacesRankedByDistance(mCurrentLocation.getLatitude(), mCurrentLocation.getLongitude(), 20, Param.name("keyword").value(task_category.getSearchKey()));
                Log.i("MyApp", "places received");
            } catch (Exception e) {
                Log.i("MyApp", "exception"); 
            }
            Log.i("MyApp", "thread exit");
        }
    }).start();
}

On the third run i'm running my function, the function getNearbyPlacesRankedByDistance does not returns and seems to be blocked.
After the function execution i don't get anything neither in the log, nor in debug.
What am i doing wrong ?

Regards,
Alex.

I also have this behaviour with getPlacesByQuery.

Funny is that just like you your code, I create a singleton instance of Google Places.

When I create a Google Places instance with each call, it works well even after three call. I guess something is not well closed (or closed somehow after the second call ?)

Found it !

In the file DefaultRequestHandler.java:58, the connection is not closed.

We could have used response.getEntity().getContent() which automatically closes the connection, but its deprecated, though we can use EntityUtils.consume(response.entity) after the line to close it.

I created my own version of RequestHandler with this line, gave it to new GooglePlaces(API_KEY, MyRequestHandler()) and everything works as expected.

Unfortunately, I don't have time to create a PR right now, but here's the solution !