एंड्रॉइड सेवा में, यह निर्धारित करने का कोई तरीका है कि कितने ग्राहक इसके लिए बाध्य हैं?एंड्रॉइड: यह निर्धारित करने के लिए कि कितने ग्राहक सेवा के लिए बाध्य हैं?
उत्तर
यह पता लगाने के लिए कोई एपीआई नहीं है कि कितने ग्राहक सेवा के लिए बाध्य हैं।
यदि आप अपनी सेवा लागू कर रहे हैं, तो अपने सेवा कनेक्शन में आप बाध्य ग्राहकों की संख्या का ट्रैक रखने के लिए संदर्भ संख्या में वृद्धि/कमी कर सकते हैं।
MyService extends Service {
...
private static int sNumBoundClients = 0;
public static void clientConnected() {
sNumBoundClients++;
}
public static void clientDisconnected() {
sNumBoundClients--;
}
public static int getNumberOfBoundClients() {
return sNumBoundClients;
}
}
MyServiceConnection extends ServiceConnection {
// Called when the connection with the service is established
public void onServiceConnected(ComponentName className, IBinder service) {
...
MyService.clientConnected();
Log.d("MyServiceConnection", "Client Connected! clients = " + MyService.getNumberOfBoundClients());
}
// Called when the connection with the service disconnects
public void onServiceDisconnected(ComponentName className) {
...
MyService.clientDisconnected();
Log.d("MyServiceConnection", "Client disconnected! clients = " + MyService.getNumberOfBoundClients());
}
}
एक आसान, मानक यह करने के लिए तरीका हो प्रतीत नहीं होता:
के बाद विचार प्रदर्शित करने के लिए कुछ psudo कोड है। मैं 2 तरीकों से सोच सकता हूं। यहां आसान तरीका है:
disconnect()
जैसी अपनी सेवा के एपीआई में एक कॉल जोड़ें। unbindService()
पर कॉल करने से पहले ग्राहक को disconnect()
पर कॉल करना चाहिए। बाध्य ग्राहकों की संख्या का ट्रैक रखने के लिए private int clientCount
जैसी सेवा में सदस्य चर बनाएँ। onBind()
में गिनती बढ़ाने और disconnect()
में इसे कम करके बाध्य ग्राहकों की संख्या को ट्रैक करें।
जटिल तरीके से ग्राहकों को आपकी सेवा से कॉलबैक इंटरफ़ेस को लागू करने और RemoteCallbackList
का उपयोग करके यह निर्धारित करने के लिए कि कितने ग्राहक वास्तव में बाध्य हैं।
आप onBind()
(वृद्धि गिनती), onUnbind()
अधिभावी द्वारा जुड़ा ग्राहकों का ट्रैक रख सकते (कमी गिनती और true
वापसी) और onRebind()
(वृद्धि गिनती)।
[इस] के अनुसार (https://groups.google.com/forum/#!msg/android-developers/2IegSgtGxyE/iXP3lBCH5SsJ), 'ऑनबिंड()' को पहले अनुरोध के लिए एक बार और एक कैश 'IBinder' कहा जाता है सेवा को परेशान किए बिना बाद के अनुरोधों पर सिस्टम द्वारा वापस कर दिया जाता है। इस मुद्दे के बारे में दस्तावेज गलत है। – Daniel
- 1. यह सुनिश्चित करने के लिए कि एंड्रॉइड
- 2. यह निर्धारित करने के लिए कि आगे की प्रक्रिया के लिए फाइलें कब की जाती हैं?
- 3. यह निर्धारित करने के लिए कि लिंक-टू-एसक्यूएल ऑब्जेक्ट
- 4. यह निर्धारित करने के लिए कि फ़ाइल अभी भी ftp
- 5. यह निर्धारित करने के लिए कि क्या यूपीएक्स
- 6. jQuery: यह निर्धारित करने के लिए कि एक div
- 7. यह निर्धारित करने के लिए कि किस स्क्रीन पर टास्कबार
- 8. यह निर्धारित करने के लिए कि कोई स्ट्रिंग सी #
- 9. यह निर्धारित करने के लिए कि 3 अंक Z^2
- 10. यह निर्धारित करने के लिए कि क्या PHP
- 11. यह सुनिश्चित करने के लिए कि आप दो बार सेवा शुरू नहीं करते हैं एंड्रॉइड
- 12. यह निर्धारित करने के लिए कि क्या विधिइन्फो बेस विधि
- 13. यह निर्धारित करने के लिए कि HttpResponseMessage को HttpClient
- 14. यह निर्धारित करने के लिए कि फोकस कहां गया?
- 15. यह निर्धारित करने के लिए कि दिनांक जावास्क्रिप्ट
- 16. सी # यह निर्धारित करने के लिए कि क्या HTTPS
- 17. यह निर्धारित करने के लिए कि कोई दिनांक किसी अन्य
- 18. यह निर्धारित करने के लिए कि उपयोगकर्ता आईफोन
- 19. यह निर्धारित करने के लिए कि क्या NSString खाली है
- 20. जीएई: यह निर्धारित करने का सबसे अच्छा तरीका कि कितने प्रकार के संग्रहित किए जाते हैं?
- 21. यह निर्धारित करने के लिए कि क्या एंड्रॉइड डिवाइस में टचस्क्रीन है?
- 22. एंड्रॉइड: यह निर्धारित करने के लिए कि एक स्पर्श घटना सर्कल में है या नहीं?
- 23. यह निर्धारित करने के लिए कि मेरे एंड्रॉइड डिवाइस की स्क्रीन को किसने स्पर्श किया?
- 24. यह निर्धारित करने के लिए कि क्या एंड्रॉइड ऐप अधिसूचना संदेश से खुलता है?
- 25. 10 ग्राहक एक सर्वलेट के लिए अनुरोध करते हैं। कितने सर्वलेट उदाहरण बनाए गए हैं
- 26. यह निर्धारित करने के लिए कि असेंबली के लिए विधानसभा.लोड() कहां खोजें?
- 27. रूबी: यह निर्धारित करने के लिए कि फ़ाइल को पढ़ने के लिए बाइनरी या टेक्स्ट
- 28. JQuery: यह पता लगाने के लिए कि तत्व के कितने बच्चे हैं?
- 29. यह सुनिश्चित करने के लिए कि
- 30. WinForms एप्लिकेशन के लिए यह निर्धारित करने का सबसे अच्छा तरीका क्या है कि यह निर्धारित करने के लिए कि कौन सी विंडोज ऑपरेटिंग सिस्टम चल रहा है?
+1 हालांकि, यह केवल तभी काम करता है जब आपके पास स्थानीय क्लाइंट आपके क्लाइंट के समान प्रक्रिया में चल रहा हो। यदि आपकी सेवा रिमोट प्रक्रिया में चल रही है तो यह काम नहीं करता है और यह तब भी काम नहीं करता है जब आप अपने ग्राहकों के लिए अपनी सेवा प्रदान करते हैं जो आपके आवेदन का हिस्सा नहीं हैं। –
डेविड सही है, मेरा उदाहरण केवल स्थानीय सेवा के लिए काम करेगा। –
मुझे अभी तक रिमोट सेवा को लागू करने की आवश्यकता नहीं है, इसलिए मुझे यकीन नहीं है कि रिमोट कैलबैक सूची का उपयोग मेरे उदाहरण को दूरस्थ सेवा के साथ कैसे करने के लिए किया जाएगा। –