2012-08-22 68 views
0

在谷歌的應用程序內結算的例子(龍與地下城)存在的主要活動的onCreate創建服務實例:在Android上是否總是有一個計費服務實例?

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    mHandler = new Handler(); 
    mDungeonsPurchaseObserver = new DungeonsPurchaseObserver(mHandler); 
    mBillingService = new BillingService(); 
    mBillingService.setContext(this); 
    .... 
} 

,並在服務由context.startService開始接收。

private void notify(Context context, String notifyId) { 
    Intent intent = new Intent(Consts.ACTION_GET_PURCHASE_INFORMATION); 
    intent.setClass(context, BillingService.class); 
    intent.putExtra(Consts.NOTIFICATION_ID, notifyId); 
    context.startService(intent); 
} 

會不會通知使用某種方式的onCreate創建的一些實例,或者它會創建該類運行的另一個實例作爲一個實際的服務?

回答

0

「allways one instance」是什麼意思?這很重要嗎? 據我所知,當接收者得到它時,它啓動服務並檢查用戶是否已經購買了它(即獲取購買信息)。服務完成後,它會向您發送廣播消息,以便您可以採取相應措施。我不認爲它總是在後臺運行。

+0

在我瞭解的服務中,即開始運行,直到終止。在Dungones示例中,它是這樣完成的: public void unbind(){ 嘗試unbindService(this); } catch(IllegalArgumentException e){} } 但是這只是在onCreate方法中創建的實例上調用,所以如果有兩個實例第二個會泄漏? – janst

+0

爲什麼你想知道圖書館的內部功能。你可以簡單地使用它。我正在使用這個庫:http://www.robotmedia.net/2011/06/android-billing-library-in-app-billing-made-simple/然後Google提供的那個更簡單。 – tasomaniac

+0

但是,我認爲該服務執行網絡連接並更新內容,並在完成時終止。如果它啓動兩次,它將運行兩次並通知您的應用程序兩次。我認爲這不是一個大問題。沒有泄漏是可能的。 – tasomaniac

相關問題