जब आप किसी सूचना से गतिविधि शुरू करते हैं, तो आपको उपयोगकर्ता की नेविगेशन का बेहतर अनुभव मिल सकता है. 'वापस जाएं' बटन पर टैप करने से, उपयोगकर्ता को वहां से वापस जाना होगा के सामान्य तरीके से होम स्क्रीन पर जाते हैं और 'हाल ही के' सेक्शन खोलते हैं स्क्रीन पर इस गतिविधि को एक अलग टास्क के तौर पर दिखाया जाना चाहिए. इस नेविगेशन को बनाए रखने के लिए अनुभव हो, तो गतिविधि को किसी नए टास्क से शुरू करें.
आपकी सूचना के लिए टैप व्यवहार सेट करने का बुनियादी तरीका इसमें बताया गया है
बेसिक कॉन्फ़िगरेशन बनाना
सूचना पर टैप करें.
इस पेज में बताया गया है कि
आपके लिए PendingIntent
सूचना भेज दी जाएगी, ताकि इससे एक नया टास्क बन सके और वापस आ जाए
स्टैक सेट करें. इसे कैसे किया जाता है
यह इस बात पर निर्भर करता है कि किस तरह की गतिविधि शुरू की जा रही है:
- नियमित गतिविधि
- यह एक ऐसी गतिविधि है जो आपके ऐप्लिकेशन के सामान्य UX फ़्लो के हिस्से के तौर पर मौजूद होती है. टास्क कब शुरू होगा अगर कोई उपयोगकर्ता सूचना से गतिविधि में आता है, तो नए टास्क को पूरी बैक स्टैक शामिल होनी चाहिए. इससे उपयोगकर्ता को नेविगेट करने के लिए 'वापस जाएं' बटन पर टैप करने की सुविधा मिलती है को बेहतर बनाने के लिए किया जा सकता है.
- खास गतिविधि
- उपयोगकर्ता को यह गतिविधि सिर्फ़ तब दिखती है, जब इसे किसी सूचना से शुरू किया गया हो. में यह गतिविधि, सूचना के यूज़र इंटरफ़ेस (यूआई) को बढ़ाने के लिए यह जानकारी देती है कि उसे नोटिफ़िकेशन में प्रदर्शित करना कठिन हो. इस गतिविधि के लिए ज़रूरी नहीं है पिछली गतिविधियां.
रेगुलर गतिविधि PendingIntent सेट अप करें
अपनी सूचना से सामान्य गतिविधि शुरू करने के लिए, PendingIntent
सेट अप करें
TaskStackBuilder
का इस्तेमाल किया जा रहा है
ताकि यह इस तरह से नया बैक स्टैक बना सके.
अपने ऐप्लिकेशन की गतिविधि की हैरारकी तय करना
अपनी गतिविधियों का सामान्य क्रम तय करने के लिए
android:parentActivityName
हर <activity>
की विशेषता
एलिमेंट शामिल करने की ज़रूरत है. यह उदाहरण देखें:
<activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!-- MainActivity is the parent for ResultActivity. --> <activity android:name=".ResultActivity" android:parentActivityName=".MainActivity" /> ... </activity>
बैक स्टैक की मदद से PendingIntent बनाएं
गतिविधियों की पिछली स्टैक वाली गतिविधि को शुरू करने के लिए,
TaskStackBuilder
और कॉल का इंस्टेंस
addNextIntentWithParentStack()
,
पासवर्ड के लिए Intent
को पास किया
गतिविधि करें जिसे आपको शुरू करना है.
जब तक आप नीचे बताए गए अनुसार हर गतिविधि के लिए अभिभावक गतिविधि तय करते हैं
पहले, आप कॉल कर सकते हैं
getPendingIntent()
ऐसा PendingIntent
करने के लिए करें जिसमें पूरी बैक स्टैक शामिल हो.
Kotlin
// Create an Intent for the activity you want to start. val resultIntent = Intent(this, ResultActivity::class.java) // Create the TaskStackBuilder. val resultPendingIntent: PendingIntent? = TaskStackBuilder.create(this).run { // Add the intent, which inflates the back stack. addNextIntentWithParentStack(resultIntent) // Get the PendingIntent containing the entire back stack. getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE) }
Java
// Create an Intent for the activity you want to start. Intent resultIntent = new Intent(this, ResultActivity.class); // Create the TaskStackBuilder and add the intent, which inflates the back // stack. TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); stackBuilder.addNextIntentWithParentStack(resultIntent); // Get the PendingIntent containing the entire back stack. PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
ज़रूरी होने पर, स्टैक में मौजूद Intent
ऑब्जेक्ट में आर्ग्युमेंट जोड़े जा सकते हैं. इसके लिए, आपको कॉल करना होगा
TaskStackBuilder.editIntentAt()
.
पिछली गतिविधियों में किसी गतिविधि को पक्का करने के लिए कभी-कभी ऐसा करना ज़रूरी होता है
जब उपयोगकर्ता इस पर जाता है, तो काम का डेटा दिखाता है.
इसके बाद, सामान्य तरीके से PendingIntent
को सूचना में पास किया जा सकता है:
Kotlin
val builder = NotificationCompat.Builder(this, CHANNEL_ID).apply { setContentIntent(resultPendingIntent) ... } with(NotificationManagerCompat.from(this)) { notify(NOTIFICATION_ID, builder.build()) }
Java
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID); builder.setContentIntent(resultPendingIntent); ... NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); notificationManager.notify(NOTIFICATION_ID, builder.build());
कोई खास गतिविधि PendingIntent सेट अप करें
क्योंकि नोटिफ़िकेशन से शुरू होने वाली विशेष गतिविधि के लिए वापस जाने की ज़रूरत नहीं होती
स्टैक करें, तो आप कॉल करके PendingIntent
बना सकते हैं
getActivity()
.
हालांकि, मेनिफ़ेस्ट में टास्क के सही विकल्प तय करें.
-
अपने मेनिफ़ेस्ट में, ये एट्रिब्यूट जोड़ें
<activity>
एलिमेंट.-
android:taskAffinity=""
- अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
इसके साथ जोड़ने पर
FLAG_ACTIVITY_NEW_TASK
फ़्लैग जिसे आप कोड में इस्तेमाल करते हैं, तो पक्का करने के लिए इस एट्रिब्यूट को खाली सेट करें गतिविधि की जानकारी, ऐप्लिकेशन के डिफ़ॉल्ट टास्क पर नहीं जाती. कोई भी ऐप्लिकेशन की डिफ़ॉल्ट अफ़िनिटी ऑडियंस (एक जैसी पसंद वाले दर्शक) वाले मौजूदा टास्क, प्रभावित. -
android:excludeFromRecents="true"
- अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है हाल ही की स्क्रीन से नए टास्क को बाहर रखता है, ताकि उपयोगकर्ता गलती से इस पर वापस नहीं जा सकता.
यह नीचे दिए गए उदाहरण में दिखाया गया है:
<activity android:name=".ResultActivity" android:launchMode="singleTask" android:taskAffinity="" android:excludeFromRecents="true"> </activity>
-
-
सूचना बनाएं और जारी करें:
-
एक ऐसा
Intent
बनाएं जोActivity
. -
नए खाली टास्क को शुरू करने के लिए
Activity
को इतने समय तक सेट करें: कॉल किया जा रहा हैsetFlags()
FLAG_ACTIVITY_NEW_TASK
और फ़्लैग के साथFLAG_ACTIVITY_CLEAR_TASK
. -
कॉल करके
PendingIntent
बनाएंgetActivity()
.
यह नीचे दिए गए उदाहरण में दिखाया गया है:
Kotlin
val notifyIntent = Intent(this, ResultActivity::class.java).apply { flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK } val notifyPendingIntent = PendingIntent.getActivity( this, 0, notifyIntent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE )
Java
Intent notifyIntent = new Intent(this, ResultActivity.class); // Set the Activity to start in a new, empty task. notifyIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); // Create the PendingIntent. PendingIntent notifyPendingIntent = PendingIntent.getActivity( this, 0, notifyIntent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE );
-
एक ऐसा
- हमेशा की तरह, सूचना के लिए
PendingIntent
को पास करें:Kotlin
val builder = NotificationCompat.Builder(this, CHANNEL_ID).apply { setContentIntent(notifyPendingIntent) ... } with(NotificationManagerCompat.from(this)) { notify(NOTIFICATION_ID, builder.build()) }
Java
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID); builder.setContentIntent(notifyPendingIntent); ... NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); notificationManager.notify(NOTIFICATION_ID, builder.build());
टास्क के अलग-अलग विकल्पों और पिछली गतिविधियों के बारे में ज़्यादा जानकारी पाएं काम करता है, तो Tasks और पिछली गतिविधियां देखें.