整个应用程序中的一个 BillingClient 实例

2024-02-09

我有一个有很多活动的应用程序。其中一项活动是显示购买选项。

在计费库的示例应用程序中(https://github.com/googlesamples/android-play-billing https://github.com/googlesamples/android-play-billing),使用了BillingClientLifecycle和BillingManager,两者都与单个Activity关联,因此当Activity创建/销毁时连接会打开/关闭。

然而,在具有许多活动的应用程序中,针对不同的活动单独执行此操作似乎并不理想。我还想在应用程序启动时检查订阅是否有效。

我正在考虑在应用程序的应用程序子类中创建 BillingClient。但是,如果我这样做,我只会打开 BillingClient 连接而不会关闭它(因为其中没有 onDestroy 方法)。以前有人这样做过并遇到过任何问题吗?这是否违反了最佳实践,是否会导致网络/性能出现任何问题?


关于计费库的更新2.x版本,引用自TrivialDriveKotlin https://github.com/googlesamples/android-play-billing/tree/master/TrivialDriveKotlin官方演示应用程序计费存储库 https://github.com/googlesamples/android-play-billing/blob/master/TrivialDriveKotlin/app/src/main/java/com/kotlin/trivialdrive/billingrepo/BillingRepository.kt来源:

请注意,已创建与 [playStoreBillingClient] 的连接 使用应用程序上下文。这意味着该实例不是 [活动]特定。而且因为它也不贵,所以可以保留 在整个[应用程序]的生命周期内开放。那么无论是 为每个[活动]或[片段](重新)创建或保持开放状态 应用程序的生命周期是一个选择的问题。

我想这也适用于第一个版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

整个应用程序中的一个 BillingClient 实例 的相关文章

  • 更改操作栏标题文本颜色

    我正在尝试更改 ActionBar 中标题文本的颜色 但我似乎无法让它工作 这是我尝试使用的风格 在我的应用程序主题中我使用titleTextStyle
  • Android 构建 gradle 在特定设备上失败

    我面临一个奇怪的问题 当我编译我的应用程序以在 Android 7 0 的设备上运行它时 它可以工作 但是当我尝试为 Android 4 2 1 的设备进行编译时 它会失败并出现以下错误 错误 任务 app transformClasses
  • Sqlite 查询检查 - 小于和大于

    return mDb query DATABASE TABLE new String KEY ROWID KEY LEVEL KEY LEVEL gt 3 lt 5 null null null null 我究竟做错了什么 它返回的值全部高
  • 任务“:app:checkReleaseDuplicateClasses”执行失败

    我的 React Native Android 构建中突然出现构建问题 令人惊讶的是 它是早上建好的 没有做任何改变 但突然就失败了 这就是我得到的错误 知道为什么会发生这种情况吗 在 stack 和 GitHub 中也看到了一些类似的问题
  • android - 过度绘制布局允许通过 LinearLayout 进行触摸

    在下面的 UI 中 我将下面的 drabable 覆盖了整个屏幕 LinearLayout 是透明的 并允许其下方的控件可单击或可触摸 基本上我可以滚动此 LinearLayout 下面的列表以及单击控件 我如何禁用它 See attach
  • 相当于Android中的javax.swing.Timer

    有没有类似的东西javax swing Timer在安卓上 我知道如何创建自己的线程 但是有类似摆动计时器的东西吗 您可能正在寻找课程android os CountDownTimer http developer android com
  • 为网络和/或持久存储序列化 Android Bundle?

    我需要序列化一个全面的应用程序 游戏 状态 以便通过网络传输或保存到磁盘并在以后检索 当然 捆绑包用于在多个用例中保存 恢复状态 因此使用它们将是理想的选择 但是 由于某种原因 Bundle 不可序列化 寻找解决方案只发现了将 Bundle
  • Android Studio磁盘空间不足如何解决?

    我随机收到此错误 并且不确定为什么 Android Studio 的磁盘空间变低 Android Studio 系统目录分区磁盘空间不足 Update 此应用程序安装在运行 10 10 1 的 Mac 上 具有 251GB 内部存储和占用
  • Android 上的硬币识别

    我目前正在开发一个 Android 应用程序 它能够拍摄硬币的现有图像 或者使用内置摄像头扫描单个硬币 非常像 Google Goggles 我正在使用 Android 版 OpenCV 我的问题如下 什么方法最适合使用 OpenCV 在
  • Android,语言文件不起作用

    我现在正在创建一个 Android 应用程序 并尝试为我的母语添加语言文件 但在某种程度上 这对我不起作用 我尝试在两部不同的手机中加载该应用程序 但结果相同 之前创建过语言文件 效果良好 但这次不行 手机设置为瑞典语 语言文件适用于我创建
  • 在 Android 中关闭 Spinner 中的下拉菜单

    在 Android 中打开和关闭微调器时 我需要为箭头图标设置动画 打开微调器时我可以旋转箭头 我只是放了一个setOnTouchListener on the Spinner 当下拉菜单关闭或隐藏时 问题就来了 因为我不知道如何在该操作上
  • 将 ArrayList 保存在捆绑包 savingInstanceState 中

    ArrayList 是在类级别定义的 这些是我保存的实例方法 Override protected void onSaveInstanceState Bundle outState super onSaveInstanceState out
  • 如何在Firebase Android应用程序中分离两个不同的用户?

    我有一个应用程序 有两种不同类型的用户 一种是教师 第二种是普通用户 如果普通会员登录 他会去normal memberActivity如果他是教师会员 他会去Teacher memberActivity 我如何在登录活动中执行此操作 我的
  • Android 在创建时出现 SQLiteException

    首先我想说我是android新手 所以如果这个问题太愚蠢我很抱歉 我正在为带有两个表的 SQLite 数据库编写一个内容提供程序 表格上是在导航抽屉活动中显示列表 第二个表格是在 ListFragment 中显示 每次启动应用程序时 我都会
  • 如何从debug.keystore文件获取MD5?

    我使用一些命令来获取 MD5 私钥debug keystore文件 但实际上我得到的是 SHA1 私钥而不是 MD5 我不知道如何获得MD5 这是我使用的命令 keytool list alias androiddebugkey keyst
  • 将搜索结果更新为 Android 中的 Lazy Adapter

    我有项目列表 想为其实现搜索功能 因此 我有一个带有 addTextChangedListener 的文本框 搜索结果运行良好 但当我尝试将结果设置为 ListView 时 新结果将附加到旧结果中 我正在使用惰性适配器 如何清除适配器中的旧
  • Android框架结构与MFC/Win32结构的比较?

    我为 Android 和 Windows 进行开发 使用 MFC 有时使用 win32 昨天我随意比较了这两个框架 它们显然非常非常不同 因此 Windows 开发与 Android 开发有很大不同 我想知道人们认为 Android 这样的
  • 如何使用asynctask显示倒计时的进度条?

    在我的应用程序中 我希望用户按下按钮 然后等待 5 分钟 我知道这听起来很糟糕 但就这样吧 5 分钟等待期间的剩余时间应显示在进度条中 我使用带有文本视图的 CountDownTimer 来倒计时 但我的老板想要看起来更好的东西 这就是进度
  • 在Android中提取视频帧

    我想知道是否可以从 Android 中正在运行的视频中提取帧 我需要定期提取帧并将其发送以进行进一步处理 有人能为我找到答案吗 Thanks Abhi 您可以使用媒体元数据检索器 http developer android com ref
  • 在android中的日期选择器对话框中显示当前日期

    我多次尝试在日期选择器对话框中显示当前日期 但失败了 它显示 1 1 1990 我已经遵循了堆栈溢出的一些答案 但不幸的是这些对我不起作用 谁能解释一下在日期选择器对话框中显示当前日期的代码 谢谢 It may help you publi

随机推荐

  • ExtJs 如何滚动到网格底部?

    我正在使用 extjs 制作一个基于网络的日志查看器 我希望将新的日志行添加到我的 gridview 的底部 因为它不需要排序将其移动到网格的顶部 加上我的同事更喜欢它 从而节省了 cpu 我的问题是 理想情况下 添加新行后网格会滚动到底部
  • React Router (Dom) v4 在输入回车键时重定向到不同的路由

    当用户在输入字段中按 Enter 时 我尝试重定向到新路线 我有一个标题和搜索组件 我想在每个页面上呈现它 我发现了使用重定向组件 withRouter 组件 使用上下文以及可能将历史对象传递到我的搜索组件 输入字段所在的位置 的不同用例
  • 替换字符串中的字符

    我正在尝试创建一个字符串 用 替换所有空格 但我不知道具体该怎么做 有人可以帮忙吗 String phrase new String This is a String test 假设它是Java 你可以使用字符串替换 http downlo
  • 如何禁用 MFC 中的最大化按钮?

    如何禁用 SDI 应用程序中的最大化按钮 功能 为了完整性 int CMainFrame OnCreate LPCREATESTRUCT lpCreateStruct ModifyStyle WS MAXIMIZEBOX 0
  • 使用数据库中的配置初始化应用程序组件

    我正在构建一个 Yii2 应用程序 通过swiftmailer 扩展 https github com yiisoft yii2 swiftmailer 我将电子邮件设置 smtp ssl 用户名等 存储在数据库表中 以便能够使用适当的视图
  • 同一服务器上的两个 Laravel 项目导致冲突

    我在同一台服务器上有两个 Laravel 5 1 项目 在单个项目上操作不会给我带来任何麻烦 但是如果我在两个浏览器选项卡上打开两个项目并在它们之间交替 我会收到 服务器遇到内部错误或配置错误 无法完成您的请求 进行了研究 发现服务器正在记
  • ORM 和逻辑删除

    任何可用的 ORM 是否支持使用位字段来表示行删除 更多信息 使用 C 工作 我需要删除这种方式来支持将远程数据库更改同步到中央数据库 我正在寻找一种可能的 ORM 但也对解决该问题的方法感兴趣 因此 如果有人知道任何语言 环境中的任何 O
  • 类型错误:io.connect 不是一个函数

    我正在遵循使用 Node js 和 socket io 的简单多人游戏的教程 http rawkes com articles creating a real time multiplayer game with websockets an
  • 如何运行包生成的jar(可能与lib下的其他jar一起运行)?

    我怎样才能跑 jarsbt生成的文件package 我创建了一个非常简单的例子 scala source package org pack class ScalaParser files Array String def doAll pri
  • 为什么有四个 Mono C# 编译器?

    这一页 http www mono project com CSharp解释了四种不同的 mono 编译器 mcs gmcs smcs dmcs 对我来说 拥有四个 C 编译器有点奇怪 通常 新版本的编译器会保持向后兼容性 我认为这是因为运
  • 需要了解 Git/Gerrit 命令(获取和推送)

    我正在遵循我们 IT 部门的一个示例 我想了解这个命令到底在做什么 git fetch origin refs changes refs remotes origin changes 为了提供一些参考框架 这是持续集成 CI 工具的一部分
  • ASP 中的“~/”解析为什么:当前文件夹还是网站的根目录?

    在文件路径中使用 是否解析为当前文件夹或网站的根目录 我有这样的文件结构 gt Folder gt Page1 Aspx gt App Themes gt Theme1 gt Images gt StyleSheet css gt Incl
  • 根据同时在另一个字段中输入的内容自动填充字段

    我试图弄清楚如何根据使用 javascript 在另一个输入字段中输入的内容自动填充输入值 这是我的代码
  • 是否有使用 Kohana 进行用户注册和登录身份验证的示例项目?

    我想制作一个网络应用程序 平台 它可以做非常简单的事情 用户可以注册 获得帐户 然后登录到平台 我已经安装了 Kohana 如果有一个轻量级的演示项目可以利用这些东西来看看它是如何完成的 那就太酷了 有没有好的可用的 Gallery3 测试
  • 使用带有注入承诺的 ngRoute 'resolve' 参数

    我已经配置了resolve返回 Promise 的多个路由的参数 以便延迟控制器的实例化 直到 Promise 得到解决 目前我使用函数符号 而不是指定要注入的字符串 例如 when article id templateUrl app a
  • 从程序集中公开不同的类型名称(别名)

    这个问题与一个相关我之前未回答的问题 https stackoverflow com q 22097706 409279 因为我仍在解决同样的问题 但这是一种不同的方法 我目前正在 C NET 项目中使用第三方 SOAP Web 服务 不幸
  • 使用 OR 运算符的 IIF 查询不起作用

    我正在尝试在 MS Access 查询中运行以下内容作为条件 基本上我想做的是 如果 checkbox True 则显示所有记录 包括那些空白或空字段的记录 我的表单组合框 combo9 中的默认值为 如果 checkbox False 则
  • 使用knockoutjs虚拟元素动态创建html部分

    我试图将 虚拟元素 与 html 绑定一起使用来动态创建 html 部分 但失败并显示消息 绑定 html 不能与虚拟元素一起使用 这是jsfiddle http jsfiddle net d3Dpp http jsfiddle net d
  • 设置为 0.1 的浮点数将 false 与 0.1 进行比较[重复]

    这个问题在这里已经有答案了 int main float f 0 1 if f 0 1 printf True else printf False 我只是c的初学者 我不明白上述程序的行为 输出为假 为什么 0 1 is a double文
  • 整个应用程序中的一个 BillingClient 实例

    我有一个有很多活动的应用程序 其中一项活动是显示购买选项 在计费库的示例应用程序中 https github com googlesamples android play billing https github com googlesam