gpt4 book ai didi

c# - 应用程序内购买时出现错误 android.app.Service Connection Leak

转载 作者:搜寻专家 更新时间:2023-11-01 09:28:51 25 4
gpt4 key购买 nike

我正在使用 Xamarin Android 开发 Android 应用程序。我正在使用 James Montemagno 的 InAppBilling 插件。

当我调用 PurchaseAsync 方法时,PlayStore 对话框打开。但是在后台我的应用程序卡住并且我没有得到任何结果。

var purchase = await CrossInAppBilling.Current.PurchaseAsync(productId, ItemType.Subscription, "apppayload");

在系统日志中有一个 android.app.ServiceConnectionLeaked 错误:

02-17 22:13:05.434  LENOVO YT3-X50L Error   8031    ActivityThread  android.app.ServiceConnectionLeaked: Activity md5742c3bd4cdfedb6330d25c53207d662c.ShopActivity has leaked ServiceConnection md57a6f08dbc6561d468b2675b2ac9edab2.InAppBillingImplementation_InAppBillingServiceConnection@2277a40 that was originally bound here
at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:1092)
at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:986)
at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1303)
at android.app.ContextImpl.bindService(ContextImpl.java:1286)
at android.content.ContextWrapper.bindService(ContextWrapper.java:604)
at mono.android.view.View_OnClickListenerImplementor.n_onClick(Native Method)
at mono.android.view.View_OnClickListenerImplementor.onClick(View_OnClickListenerImplementor.java:30)
at android.view.View.performClick(View.java:5205)
at android.view.View$PerformClick.run(View.java:21164)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

我只在 LENOVO YT3-X50L 上遇到此错误。在三星手机上它工作正常...

最佳答案

ServiceConnectionLeaked

CrossInAppBilling代码没有考虑到您的 Activity 可能由于内存压力/需求而被终止/从内存中清除,并且没有直接采取任何措施来阻止它,应用程序开发人员决定他们何时需要采取特殊行动。

这是我在低端 Android 设备和新的 Android Oreo Go (<=1MB) 测试设备中经常看到的情况,但在任何设备上都可能发生,但在 2GB 和更低容量的设备上最为明显。

  • 在调用任何外部代码之前刷新/释放尽可能多的内存

    • 专注于发布图像通常是减少内存的最大返回(购买完成后恢复它们)

    • 在 Oreo Go 512MB 设备的情况下,我不得不加倍努力并完成当前 Activity,创建一个新的空白/空 transient Activity,然后调用外部代码(应用计费、相机等)并在完成后恢复原始 Activity ,并使用从外部获得的新信息对其进行更新。

注意:首先分析您的应用和 Activity,以便集中您的时间。

  • 使用您自己的 Keep-Alive 服务

    • 使用 Start/StopService 而不是 Bind/UnBindService
    • 让它成为前台服务

注意:这不会阻止操作系统终止/刷新您的 Activity/服务,它只是提供一个“提示”,它不应该...

注意:监控Importance RunningAppProcessInfo 内的州确定您的应用程序是否正在输入 ReasonServiceInUse在执行外部代码之前。

关于c# - 应用程序内购买时出现错误 android.app.Service Connection Leak,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48846134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com