गतिविधि शुरू करने के लिए कोड का उपयोग करते समय एंड्रॉइड ओरेओ 8.0 (26 एपीआई) से, यह एक नई गतिविधि नहीं बनाएगा यदि पिछला उदाहरण नष्ट नहीं हुआ था और अभी भी जीवित है, लेकिन पिछले एंड्रॉइड (जैसे मार्शमलो, नौगेट) पर यह हमेशा एक नई गतिविधि बनाता है किसी भी स्थिति में।

Android संस्करण के आधार पर यह इतना भिन्न व्यवहार क्यों करता है?

मैं गतिविधि का एक नया उदाहरण बनाने से रोकना चाहता हूं और अधिसूचना पर क्लिक करते समय एंड्रॉइड 23 (मार्शमैलो) से शुरू होने वाले मौजूदा (यदि यह अभी भी जीवित है) को सामने लाना चाहता हूं। अभी के लिए यह केवल Oreo Android (26) से शुरू होकर काम करता है

val intent = Intent(this, TestActivity::class.java).apply {
    flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
}

val pendingIntentt = PendingIntent.getActivity(
    this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT
)

val ... = NotificationCompat.Builder(this, channelId)
    ...
    .setContentIntent(pendingIntent)
1
user924 13 सितंबर 2020, 19:30

2 जवाब

सबसे बढ़िया उत्तर

यदि आप ऐप के मौजूदा इंस्टेंस को अग्रभूमि में लाना चाहते हैं, या एक नया इंस्टेंस बनाना चाहते हैं यदि ऐप नहीं चल रहा है (अग्रभूमि या पृष्ठभूमि), तो बस अपने Notification में लॉन्च Intent का उपयोग करें। :

val intent = getPackageManager.getLaunchIntentForPackage("my.package.name")
1
David Wasser 15 सितंबर 2020, 15:15

आप Intent.FLAG_ACTIVITY_SINGLE_TOP ध्वज का उपयोग करने का प्रयास कर सकते हैं

-1
Sanjay Developer 13 सितंबर 2020, 19:47