आपकी बिलिंग नहीं होने पर स्थानीय बिलिंग सेवा IMarketBillingService से कॉलबैक को संभालती है।
संदर्भ (http://developer.android.com/reference/android/app/Activity.html) का कहना है:
"एक गतिविधि को रोका या बंद कर दिया, प्रणाली खत्म करने के लिए यह पूछ या तो द्वारा स्मृति से गतिविधि ड्रॉप कर सकते हैं, या बस अपने प्रक्रिया की मौत हो गई जब जाता है। यह उपयोगकर्ता को फिर से प्रदर्शित किया जाता है, यह पूरी तरह से पुनरारंभ होना चाहिए और इसके पिछले राज्य में बहाल होना चाहिए। "
उदाहरण के लिए यदि आप एक RESTORE_TRANSACTIONS बिलिंग अनुरोध का आह्वान करते हैं, तो एंड्रॉइड मार्केट सेवा के प्रतिक्रियाओं में आने के लिए कुछ समय लग सकता है। एक सेवा का उपयोग करके, आप जानते हैं कि गतिविधि लाइफसाइक्ल के बावजूद आप प्रतिक्रियाओं को संभालने के लिए हमेशा आसपास रहेंगे।
बस मस्ती के लिए, मैंने एक छोटा टेस्ट-ऐप लिखने की कोशिश की और सुनिश्चित किया गया। एक चलने वाला धागा रोके गए या बंद गतिविधि पर विधियों को कॉल कर सकता है। जब भी अग्रभूमि में नहीं है तब भी थ्रेड इसके यूआई को भी संशोधित कर सकता है। निम्न एप्लिकेशन चलाएं, ऐप को रोकने के लिए होम स्क्रीन दबाएं। 10 सेकंड के बाद वापस जाएं, और देखें कि टेक्स्ट व्यू बदल गया है ...
package com.example.playground;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
public class MyActivity extends Activity {
private static String TAG = MyActivity.class.getName();
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Thread t = new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(10000);
someMethod();
} catch (InterruptedException e) {
Log.e(TAG, e.getMessage(), e);
}
}
});
t.start();
}
private void someMethod() {
Log.d(TAG, "Some method called");
TextView tv = (TextView) findViewById(R.id.textfield);
tv.setText("Called later");
}
}
स्रोत
2012-01-18 20:07:31
धन्यवाद +1 पहले से ही एक महान उत्तर के लिए है। सेवा की आवश्यकता अच्छी तरह से समझाई गई है और यहां उदाहरण है * लेकिन ... * एक सेवा ('IMarketBillingService') पर्याप्त नहीं है? दो क्यों? स्थानीय * और * दोनों दूरस्थ क्यों? –
यदि आप IMarketBillingService को देखते हैं, तो इसे सार्वजनिक इंटरफ़ेस के रूप में घोषित किया जाता है IMarketBillingService android.os.IInterface को बढ़ाता है। यह एक सेवा नहीं है, केवल एक स्टब जिसे आप रिमोट सर्विस के साथ संवाद करने के लिए उपयोग करते हैं, वास्तव में एंड्रॉइड मार्केट ऐप में चल रहा है अगर मुझे गलत नहीं लगता है। क्लैस के नाम का "सेवा" हिस्सा उलझन में है। –