小编Mat*_*tro的帖子

Google Play In-app Billing API 版本少于 3,更新 Play 商店

我正在使用 Google Play 结算库在我的应用中提供一些应用内购买。一切正常,但我在 Crashlytics 上收到错误“Google Play In-app Billing API version is less than 3”,一些用户主要使用三星设备。

我搜索了类似的问题,我发现它可能是由于安装了过时的 Google Play 商店版本或未使用 Google 帐户登录造成的。问题是在许多报告的情况下,安装的 Play 商店版本是最新的并且帐户已正确登录,因为第一次连接到计费服务是成功的。

例如,安装20.39.15了 Play 服务和22.4.29-21Play 商店版本的用户有这种错误流:

  • 实例化 BillingClient
  • 称呼 billingClient.startConnection
  • 收到onBillingSetupFinished带有响应代码的回调OK
  • 查询购买并获得成功响应

然后几秒钟后:

  • 接到3个电话onBillingServiceDisconnected(此方法不起作用在我的实现)
  • 接到一个电话,要onBillingSetupFinishedresponseCode3 debugMessage:“谷歌Play应用内结算API版本低于3”

这是我正在使用的代码的一部分,为了清楚起见,我省略了日志记录:

class BillingManager(
    private val application: Application
) : PurchasesUpdatedListener, BillingClientStateListener {

...

    init {
        billingClient = BillingClient.newBuilder(application.applicationContext)
                .enablePendingPurchases()
                .setListener(this)
                .build()
        connectToPlayBillingService()
    }

    private fun connectToPlayBillingService() { …
Run Code Online (Sandbox Code Playgroud)

android google-play-services play-billing-library

12
推荐指数
0
解决办法
1443
查看次数

Recyclerview onCreateViewHolder调用了每个项目

我有一个RecyclerView内部NestedScrollView显示异步下载的一些数据.问题是当项目被启动时存在显着的滞后.经过一些测试后,我发现问题是每个项目都调用onCreateViewHolder,并且需要一些时间来扩充布局.这是我的适配器:

public class EpisodeAdapter extends RecyclerView.Adapter<EpisodeAdapter.ViewHolder> {

    private static final String TAG = "EpisodeAdapter";

    private static final int NO_POSITION = -1;
    private static final int EXPAND = 1;
    private static final int COLLAPSE = 2;

    private SparseArray<Episode> episodes;
    private OnItemClickListener<Episode> downloadClickListener;
    private OnItemClickListener<Episode> playClickListener;

    private RecyclerView recyclerView;
    private final EpisodeAnimator episodeAnimator;
    private final Transition expandCollapse;

    private int expandedPosition = NO_POSITION;

    public EpisodeAdapter() {
        episodes = new SparseArray<>();
        episodeAnimator = new EpisodeAnimator();
        expandCollapse = new AutoTransition();
    } …
Run Code Online (Sandbox Code Playgroud)

android android-adapter recycler-adapter android-recyclerview

2
推荐指数
1
解决办法
1254
查看次数