This happens randomly, but in most cases the first request to open Google
Billing dialog is ignored, each next works perfectly, until app is restarted
again
OS VERSION: Android 2.3
DEVICE: LG P500
By tracking code execution using Log I've discovered that service is connected
and pending requests are executed before current (first) request was added to
pending queue like this:
public boolean runRequest() {
//this is ignored on first connection
if (runIfConnected()) {
return true;
}
if (bindToMarketBillingService()) {//create service which gets executes immediately
//and also executes onServiceConnected event which executes runPendingRequests()
// Only after that current request is added to pending queue thus it never gets executed
mPendingRequests.add(this);
return true;
}
return false;
}
The solution would be to add current request to queue before binding service
like this:
public boolean runRequest() {
//if there is already a service we get in this if statement
if (runIfConnected()) {
return true;
}
//else we add the request to queue
mPendingRequests.add(this);
//and only then try to bind the service
if (bindToMarketBillingService()) {
return true;
}
return false;
}
Original issue reported on code.google.com by ar2rsawseen on 4 May 2013 at 4:31
Original issue reported on code.google.com by
ar2rsawseen
on 4 May 2013 at 4:31