पेंडिनइन्टेंट्स विजेट्स के लिए बहुत अधिक उपयोग किए जाते हैं। चूंकि चल रहे विजेट का लेआउट आपके कोड से "संबंधित" नहीं है, लेकिन यह सिस्टम के नियंत्रण में है, इसलिए आप सीधे इंटरफ़ेस तत्वों पर श्रोताओं को क्लिक नहीं कर सकते हैं। इस मामले विजेट में एक बटन एक सेवा शुरू होता है में
// get the widget layout
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.id.widget_layout);
// prepare to listen the clicks on the refresh button
Intent active = new Intent(context, WidgetCode.UpdateService.class);
PendingIntent refreshPendingIntent = PendingIntent.getService(context, 0, active, 0);
remoteViews.setOnClickPendingIntent(R.id.buttonWidgetRefresh, refreshPendingIntent);
// send the changes to the widget
AppWidgetManager.getInstance(context).updateAppWidget(appwidgetid, remoteViews);
: इसके बजाय आप उन तत्वों (बटन) की तरह करने के लिए एक PendingIntent की तरह कुछ आवंटित इसलिए जब उपयोगकर्ता उन्हें छू लेती है, PendingIntent "मार डाला" है। आमतौर पर आप putExtras() के साथ इरादे में अतिरिक्त जानकारी डालते हैं, इसलिए सेवा को अपना काम करने के लिए कोई आवश्यक जानकारी मिल जाएगी।
तो, क्या कभी ऐसा समय है जब आप 'लंबित इंटेंट' के साथ सेवा शुरू करना चाहते हैं? –
यदि आप निकट भविष्य में सेवा शुरू करना चाहते हैं, तो यह आदर्श मामला होगा। मान लें कि मेरे पास एक अधिसूचना है जो उपयोगकर्ता के खाते के लिए उपलब्ध नया अपडेट प्रदर्शित करती है। आदर्श रूप से एक लंबित इरादा होगा जो सर्वर से कनेक्ट स्थापित करेगा और इस जानकारी को डाउनलोड करेगा। मैं यह चाहता हूं कि उपयोगकर्ता ने अधिसूचना को तुरंत टैप नहीं किया है, इस तरह मैं उपयोगकर्ता की सुविधा का इंतजार करता हूं, या यदि उपयोगकर्ता परवाह नहीं है तो वे अधिसूचना रद्द कर सकते हैं और अगला नया अपडेट उसी तरह प्रतिक्रिया करेगा। – JoxTraex
ग्रेट स्पष्टीकरण, धन्यवाद! – damluar