From TrivalDrive In-app Billing Version 3 API example, I can see during startup, the application will check whether user had purchased premium feature (mIsPremium flag), by communicating with Google Play service.
Google Play service will cache such information, so that such query can be reasonable fast enough without going through networking layer. However, there is possibility that user may clear Google Play’s cache sometimes.
Hence, to ensure responsiveness of the app, is it advisable, to stored an encrypted mIsPremium flag in SharedPreference, so that without IPC communicating with Google Play service everytime, we still know whether a user had purchased that particular in-app purchase premium feature?
You may cache the mIsPremium flag in your SharedPreferences, and use this value in your app until you receive the real value from Google Play app.
In this way, you don’t have to wait the answer from the Store.
Moreover, you can override the value in SharedPreferences each time you receive the callback from the Store.