The getPurchases()
is used to retrieve a list of purchases that the user has made with a Google account. This primarily helps in restoring the user's purchase(if any) after, say the user has reset his phone to factory settings. This list is retrieved from the Google Play's app cache / from the network.
With In-app Billing version 3, the call to getPurchases() returns with the list of purchases(those that are not consumed) fairly quickly. But occassionally it may take some time for the Google play app to fetch the purchase list (if you clear the GP app's cache and app data, it has to fetch the purchases from your account which will involve a network operation, so there will be some delay).Otherwise, the response will be instantaneous.
So, It would be good to save the 'purchase state' of your in-app-item locally in the Shared Preference or in a file on your device. This way you can quickly check if the in-app item has been purchased. And it would be good to check your item's purchase state, every time your app starts.