Android 如何处理DeadObjectException?

Android 如何处理DeadObjectException?,android,in-app-purchase,google-play-services,Android,In App Purchase,Google Play Services,在请求应用内购买价格时,我从一些设备收到DeadObjectException的异常报告。在我调用计费服务连接上的getSkuDetails时发生异常 我觉得这方面的文档不是特别清楚 您正在调用的对象已死亡,因为其宿主进程已不存在 如果我假设计费服务由于某种原因被Android终止,我是否正确理解了这一点 为什么? 有没有办法阻止这种情况发生 我应该阻止这种事情发生吗 我应该如何处理例外情况 有没有一种方法可以重现这个场景进行测试 我有两种方法 void bindToBillingService

在请求应用内购买价格时,我从一些设备收到DeadObjectException的异常报告。在我调用计费服务连接上的getSkuDetails时发生异常

我觉得这方面的文档不是特别清楚

您正在调用的对象已死亡,因为其宿主进程已不存在

  • 如果我假设计费服务由于某种原因被Android终止,我是否正确理解了这一点
  • 为什么?
  • 有没有办法阻止这种情况发生
  • 我应该阻止这种事情发生吗
  • 我应该如何处理例外情况
  • 有没有一种方法可以重现这个场景进行测试
  • 我有两种方法

    void bindToBillingService() {
        AndroidLauncher.getActivity().bindService(new Intent("com.android.vending.billing.InAppBillingService.BIND"),
                mServiceConn, Context.BIND_AUTO_CREATE);
    }
    
    public void unbindBillingService() {
        if (getBillingServiceConnection() != null) {
            AndroidLauncher.getActivity().unbindService(mServiceConn);
        }
    }
    
    我应该这样做吗

        try {
            // Do something billing related
        } catch (DeadObjectException e) {
            unbindBillingService();
            bindToBillingService();
            // Wait for a connection and then try again
        }
    

    可能有相同的重复problem@TylerPfaff有什么解决办法吗?