简体   繁体   English

android ANR BillingClient.queryPurchases

[英]android ANR BillingClient.queryPurchases

I am using Google billing service, version 2.0.3.我正在使用 Google 计费服务,版本 2.0.3。 Running the BillingClient.queryPurchases method in the UI thread in the activity onstart method, users sometimes encounter Application Not Responding errors like this:运行BillingClient.queryPurchases在OnStart方法活动UI线程的方法,用户有时会遇到应用程序不响应这样的错误:

THREADS:
    "main" prio=5 tid=1 TimedWaiting
      | group="main" sCount=1 dsCount=0 obj=0x73b04268 self=0xa5905400
      | sysTid=8394 nice=-4 cgrp=default sched=0/0 handle=0xa85ae534
      | state=S schedstat=( 0 0 0 ) utm=2439 stm=491 core=1 HZ=100
      | stack=0xbe437000-0xbe439000 stackSize=8MB
      | held mutexes=
      at java.lang.Object.wait! (Native method)
    - waiting on <0x05482764> (a java.lang.Object)
      at java.lang.Thread.parkFor$ (Thread.java:2127)
    - locked <0x05482764> (a java.lang.Object)
      at sun.misc.Unsafe.park (Unsafe.java:325)
      at java.util.concurrent.locks.LockSupport.parkNanos (LockSupport.java:201)
      at java.util.concurrent.FutureTask.awaitDone (FutureTask.java:418)
      at java.util.concurrent.FutureTask.get (FutureTask.java:176)
      at com.android.billingclient.api.BillingClientImpl.queryPurchases (BillingClientImpl.java:699)

What is the best way to fix this type of ANRs?修复此类 ANR 的最佳方法是什么?

Since Version 4.0.0 of the Google Play Billing Library you can use BillingClient.queryPurchasesAsync() .从 Google Play Billing Library 的4.0.0 版开始,您可以使用BillingClient.queryPurchasesAsync()
BillingClient.queryPurchases() will be removed in a future release. BillingClient.queryPurchases()将在未来版本中删除。

implementation("com.android.billingclient:billing:4.0.0")
billingClient.queryPurchasesAsync(BillingClient.SkuType.INAPP, (billingResult1, list) -> {
    ...
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM