2016-04-28 13 views
18

क्यों जब एक अधिसूचना बनाने हम TaskStackBuilder प्रयोग करते हैं? मुझे इसके पीछे तर्क नहीं मिला है।हम टास्कस्टैकबिल्डर का उपयोग क्यों करते हैं?

किसी कृपया समझा जा सकता है।

public void showText(final String text){ 
    Intent intent = new Intent (this, MainActivity.class); 
    TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); 
    stackBuilder.addParentStack(MainActivity.class); 
    stackBuilder.addNextIntent(intent); 
    PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); 
    Notification notification = new Notification.Builder(this) 
      .setSmallIcon(R.mipmap.ic_launcher) 
      .setContentTitle(getString(R.string.app_name)) 
      .setAutoCancel(true) 
      .setPriority(Notification.PRIORITY_MAX) 
      .setDefaults(Notification.DEFAULT_VIBRATE) 
      .setContentIntent(pendingIntent) 
      .setContentText(text) 
      .build(); 
    NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
    notificationManager.notify(NOTIFICACTION_ID, notification); 
} 
+0

https://developer.android.com/training/implementing-navigation/temporal.html#CreateBackStack –

उत्तर

33

मान लें कि आपके पास एक ईमेल भेजने वाला ऐप है और इसमें दो गतिविधियां हैं। एक MainActivity है जिसमें ईमेल सूची है और दूसरा एक ईमेल प्रदर्शित करने के लिए है (EmailViewActivity)। तो अब जब आप एक नया ईमेल प्राप्त करते हैं तो आप स्टेटसबार पर एक अधिसूचना प्रदर्शित करते हैं। और अब आप एक उपयोगकर्ता इस पर क्लिक करें और भी है, तो उपयोगकर्ता बटन पर क्लिक करता है वापस ईमेल दिखाने के बाद आपको ईमेल सूची गतिविधि (MainActivity) दिखाना चाहते हैं जब कि ईमेल को देखना चाहते। इस परिदृश्य के लिए हम TaskStackBuilder का उपयोग कर सकते हैं। नीचे उदाहरण देखें:

public void showEmail(final String text){ 

     Intent intent = new Intent (this, MainActivity.class); 
     TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); 
     stackBuilder.addParentStack(MainActivity.class); 
     stackBuilder.addNextIntent(intent); 
     Intent intentEmailView = new Intent (this, EmailViewActivity.class); 
     intentEmailView.putExtra("EmailId","you can Pass emailId here"); 
     stackBuilder.addNextIntent(intentEmailView); 
     PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); 
     Notification notification = new Notification.Builder(this) 
       .setSmallIcon(R.mipmap.ic_launcher) 
       .setContentTitle(getString(R.string.app_name)) 
       .setAutoCancel(true) 
       .setPriority(Notification.PRIORITY_MAX) 
       .setDefaults(Notification.DEFAULT_VIBRATE) 
       .setContentIntent(pendingIntent) 
       .setContentText(text) 
       .build(); 
     NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
     notificationManager.notify(NOTIFICACTION_ID, notification); 
    } 

आशा है कि आप समझ सकते हैं। अधिक जानकारी के लिए यूआरएल नीचे

का पालन करें: http://developer.android.com/reference/android/support/v4/app/TaskStackBuilder.html http://developer.android.com/guide/components/tasks-and-back-stack.html http://www.programcreek.com/java-api-examples/index.php?api=android.app.TaskStackBuilder

3

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

0

अन्य उत्तर यह अच्छी तरह समझाया, तो आपको लंबित आशय का प्रयोग कर एक विस्तार गतिविधियों के बारे में एक उपयोगकर्ता भेजने के लिए है, तो आप उन्हें वापस बटन का उपयोग करने के लिए मुख्य गतिविधि के लिए वापस जाना चाहता हूँ। एक वैकल्पिक तरीका यह is

Intent detailIntentForToday = new Intent(context, DetailActivity.class); 
TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(context); 
taskStackBuilder.addNextIntentWithParentStack(detailIntentForToday); 
PendingIntent resultPendingIntent = taskStackBuilder 
    .getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); 

इसके लिए सेट करने के लिए, आप भी AndroidManifest.xml में

android:parentActivityName=".MainActivity" 
DetailActivity के लिए

सेट करना होगा।

संबंधित मुद्दे