0

我在使用 Google Play 计费库时遇到 IllegalStateException:com.android.billingclient:billing:1.1。

此异常仅在某些特定情况下有时会发生。例如:对于每 500 次安装,我们得到 4 个错误。我们无法在本地重现此问题。

      override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        billingClient = BillingClient.newBuilder(this@MainActivity).setListener(this).build()
        billingClient.startConnection(object : BillingClientStateListener {
            override fun onBillingSetupFinished(@BillingClient.BillingResponse billingResponseCode: Int) {
                if (billingResponseCode == BillingClient.BillingResponse.OK) {
                    var purchasesResult = billingClient.queryPurchases(BillingClient.SkuType.INAPP)
                    var purchaseList = purchasesResult.purchasesList

                    purchaseList.forEach {  // LINE 89 -> MainActivity.kt
                        if(it.sku.equals(ExtraNames.REMOVE_ADS_SKU)){
                            Utils.setIntSharedPreferences(this@MainActivity, ExtraNames.REMOVE_ADS, ExtraNames.YES)
                        }
                    }

                }
            }
            override fun onBillingServiceDisconnected() {
                //Nothing to do now
            }
        })
        ...
     }

这是堆栈跟踪:

java.lang.IllegalStateException: 
  at com.myapp.br.MainActivity$onCreate$1.onBillingSetupFinished (MainActivity.kt:89)
  at com.android.billingclient.api.BillingClientImpl$BillingServiceConnection.onServiceConnected (BillingClientImpl.java:903)
  at android.app.LoadedApk$ServiceDispatcher.doConnected (LoadedApk.java:1818)
  at android.app.LoadedApk$ServiceDispatcher$RunConnection.run (LoadedApk.java:1847)
  at android.os.Handler.handleCallback (Handler.java:808)
  at android.os.Handler.dispatchMessage (Handler.java:101)
  at android.os.Looper.loop (Looper.java:166)
  at android.app.ActivityThread.main (ActivityThread.java:7425)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:245)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:921)

任何线索,是什么导致了这个异常?

4

1 回答 1

3

一种可能性是您的活动在调用时间时不再处于活动状态onBillingSetupFinished......确保您正在调用endConnection您的活动onDestroy()

override fun onDestroy() {
    billingClient.endConnection()
}
于 2018-10-20T13:41:49.933 回答