2011-10-09 12 views
7

जिस परियोजना पर मैं काम कर रहा हूं उसके दो अलग-अलग ऐप्स हैं, 1 सर्वर है और दूसरा क्लाइंट है। सर्वर ऐप में 1 सर्विस क्लास है, जो onStartCommand() फ़ंक्शन में सर्वर थ्रेड शुरू करती है। सर्वर थ्रेड के लिए क्लास सर्विस क्लास में ही परिभाषित किया गया है। जब भी सर्वर क्लाइंट से कोई डेटा प्राप्त करता है तो यह डेटाबेस में संग्रहीत करता है। तो समस्या यह है कि, मैं उपयोगकर्ता को सूचित करना चाहता हूं कि अधिसूचना या टोस्ट संदेश के माध्यम से नया डेटा कहीं भी संभव हो गया है। मुझे यह भी बताएं कि मुझे अधिसूचना के लिए कोड कहां लिखना चाहिए, चाहे मुझे सेवा कक्षा या थ्रेड क्लास या firstActivity कक्षा में लिखना चाहिए, जिससे मैं सर्वर सेवा शुरू कर रहा हूं। धन्यवाद।पृष्ठभूमि सेवा से अधिसूचना कैसे दिखाएं?

+1

[एंड्रॉयड में एक सेवा से एक अधिसूचना भेजा जा रहा है] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/1207269/sending-a-notification-from-a-service-in-android) – Reno

+0

@ रेनो: मैंने पहले ही इस पोस्ट को संदर्भित किया है, लेकिन मुझे समझ में नहीं आया कि मुझे यह कोड कहां रखना चाहिए, यह कोड अपूर्ण है। मैं एंड्रॉइड में शुरुआत कर रहा हूँ। – sagar

उत्तर

3

क्या मैं इसे गलत तरीके से पढ़ रहा हूं? आपके सर्वर ऐप और आपके क्लाइंट ऐप दोनों एक ही एंड्रॉइड डिवाइस पर हैं?

किसी भी मामले में, सेवा के माध्यम से अधिसूचनाओं के लिए कोड के लिए ApiDemos पर एक नज़र डालें।

और चूंकि आप शायद रिमोट सर्वर (और स्थानीय नहीं) से निपटने जा रहे हैं और नेटवर्क से जुड़े सभी विलंबता मुद्दों का मानना ​​है, तो मुझे लगता है कि आप अपनी सेवा को असिनक टास्क में बेहतर तरीके से लपेटें।

ब्रॉडकास्ट रिसीवर के बारे में भी जानें, पंजीकृत ब्रॉडकास्ट रिसीवर एक लूप में अनिश्चित काल तक अपना स्वयं का सर्विस मतदान करने की आवश्यकता के बिना सेवाओं/गतिविधियों को ट्रिगर करने का एक शानदार तरीका हो सकता है।

+0

धन्यवाद! मेरा सर्वर और क्लाइंट ऐप आर विभिन्न अनुकरणकों पर चल रहा है, डेटा हस्तांतरण में कोई समस्या नहीं है और इसे डेटाबेस में संग्रहीत करना है। मैं ब्रॉडकास्ट रिसीवर को देखूंगा। डेटाबेस तालिका में बदलाव का पता लगाने का कोई तरीका है? इसलिए यदि परिवर्तन मिले तो मैं गतिविधि वर्ग से उपयोगकर्ता को सूचित कर सकता हूं। – sagar

+0

जैसा कि आपने कहा था, मैंने प्रसारण रिसीवर का उपयोग किया है, और यह काम कर रहा है, लेकिन मैं प्रसारण के साथ 1 स्ट्रिंग भेजना चाहता हूं और उस स्ट्रिंग को टोस्ट संदेश में प्रदर्शित करना चाहता हूं। मैंने intent.putextra() का उपयोग किया है। लेकिन रिसीवर के अंत में मुझे शून्य मान मिल रहा है, मुझे लगता है कि समस्या मेरे अतिरिक्त कोड में है, क्या आप मुझे बता सकते हैं कि प्रसारण उद्देश्य से डेटा कैसे प्राप्त किया जाए। – sagar

9

सबसे पहले आपको इस लेख को Notifications का उपयोग करने के तरीके पर पढ़ने की आवश्यकता है।

अगला अधिसूचना भेजने के लिए इसका उपयोग करें, आप इस कोड को सेवा कक्षा में उस बिंदु पर लिख सकते हैं जहां आपको ग्राहक से कुछ डेटा प्राप्त होता है।

NotificationManager notificationManager = 
    (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
int icon = R.drawable.notification_icon; 
CharSequence notiText = "Your notification from the service"; 
long meow = System.currentTimeMillis(); 

Notification notification = new Notification(icon, notiText, meow); 

Context context = getApplicationContext(); 
CharSequence contentTitle = "Your notification"; 
CharSequence contentText = "Some data has arrived!"; 
Intent notificationIntent = new Intent(this, YourActivityThatYouWantToLaunch.class); 
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); 

notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); 

int SERVER_DATA_RECEIVED = 1; 
notificationManager.notify(SERVER_DATA_RECEIVED, notification); 
संबंधित मुद्दे