2016-08-02 53 views
1

TL; DR:根据文档,购买产品有两种不同的方式,我该用哪种方式?我是否使用意图或IABHelper.launchPurchaseFlow()我应该使用意图还是听众?

this文档,使用launchPurchaseFlow();和连接监听器来进行购买:

IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = 
    new IabHelper.OnIabPurchaseFinishedListener() { 
     public void onIabPurchaseFinished(IabResult result, Purchase purchase) 
     { 
      //Item bought...? Why should I use this option 
     } 
}; 

mHelper.launchPurchaseFlow(this, SKU_GAS, 10001, 
     mPurchaseFinishedListener, "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ"); 

然而,根据this文档,我必须使用意图和onActivityForResult()购买产品:

startIntentSenderForResult(pendingIntent.getIntentSender(), 
     1001, new Intent(), Integer.valueOf(0), Integer.valueOf(0), 
     Integer.valueOf(0)); 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == 1001) {  
     if (resultCode == RESULT_OK) { 
      //Item bought...? Why should I use this option 
     } 
    } 
} 

我应该使用哪种方法来购买产品?这两种选择看起来都非常相似,但有什么不同,而且更好?

+0

这完全取决于你想要的代码流向。两者都完全有效。 –

+0

两者实际上都是有效的,它主要取决于偏好。我有时在'Adapter'上使用侦听器,它与'Fragment'不在同一个类中,这样我就不会将'Fragment'传递给'Adapter' –

+0

@ cricket_007你能否给我提供一个场景,我可能想要使用另一个选项?感谢您的回应。 –

回答

0

没关系。但是,如果我使用侦听器,那么IabHelper的launchPurchaseFlow()将使用startIntentSenderForResult,它在完成时调用onActivityResult()。所以即使我使用监听器,我也需要onActivityForResult,他们在文档中没有提到它。这个链接会清除了一点:

onIabPurchaseFinished never called.