我正在使用 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 商店版本的用户有这种错误流:
BillingClientbillingClient.startConnectiononBillingSetupFinished带有响应代码的回调OK然后几秒钟后:
onBillingServiceDisconnected(此方法不起作用在我的实现)onBillingSetupFinished与responseCode3 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) 我有一个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
android ×2