如何处理DeadObjectException?

Wil*_*ood 11 android in-app-purchase google-play-services

在请求购买应用程序的价格时,我从某些设备收到DeadObjectException的异常报告.当我在我的结算服务连接上调用getSkuDetails时会发生异常.

我没有发现这方面的文件特别清楚.

您呼叫的对象已经死亡,因为其托管过程不再存在.

  1. 如果我认为Android出于某种原因已经杀死了结算服务,我是否正确理解了这一点?
  2. 为什么?
  3. 有没有办法阻止这种情况发生?
  4. 我应该阻止这种情况发生吗?
  5. 我应该如何处理异常?
  6. 有没有办法可以重现这个场景进行测试?

我有两种方法

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

我应该这样做吗?

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