दिलचस्प पोस्ट
एंड्रॉइड एमुलेटर पर कोई इंटरनेट नहीं – क्यों और कैसे ठीक करें? प्राइमफैसेस सीएसएस देखो 'एन'फ़ेल लापता है और जेएस "अनचाहे संदर्भ त्रुटि: प्राइमफैसेस परिभाषित नहीं है" डेटाग्रीड WPF में चयनित पंक्ति आइटम प्राप्त करें एमएक्स में विश्व स्तर पर कुंजी बाध्यकारी को ओवरराइड करें WPF एक ऑब्जेक्ट के गुणों के लिए बाइंडिंग क्यों करता है, लेकिन फ़ील्ड नहीं? गिट में मौजूदा शाखा नाम कैसे प्राप्त करें? .NET अनुप्रयोग के लिए उपयोगकर्ता सेटिंग्स को स्टोर करने का सबसे अच्छा तरीका क्या है? एक NullReferenceException क्या है, और मैं इसे कैसे ठीक करूँ? node.js सिंक्रोनस सिस्टम आदेश को निष्पादित करें JQuery के साथ एचटीएमएल टिप्पणी का चयन लिनक्स कर्नेल मॉड्यूल के अंदर फाइलें कैसे पढ़ती हैं? मैं PHP का उपयोग कर एक MySQL डाटाबेस से छवियों को कैसे संग्रह और पुनः प्राप्त कर सकता हूं? जावास्क्रिप्ट के साथ चेकबॉक्स चेक / अनचेक करें? एक ब्लूटूथ डिवाइस कनेक्ट होने पर प्रोग्रामेटिक रूप से कैसे बताएंगे? (एंड्रॉइड 2.2) जावास्क्रिप्ट की तिथि को सी # अजाक्स द्वारा

अग्रभूमि (स्टैक के ऊपर) को कैसे गतिविधि लाया जाए?

एंड्रॉइड में, मैंने एक गतिविधि उदाहरण गतिविधि परिभाषित की

जब मेरा आवेदन शुरू किया गया था, इस ए-गतिविधि का एक उदाहरण बनाया गया था, कहते हैं कि यह A । जब उपयोगकर्ता ने A में एक बटन क्लिक किया, बी-गतिविधि का एक अन्य उदाहरण बी बनाया गया था। अब कार्य स्टैक बीए है, बी के साथ शीर्ष पर। उसके बाद, उपयोगकर्ता बी पर एक बटन क्लिक किया, सी गतिविधि का एक और उदाहरण, और सी बनाया गया था। अब कार्य स्टैक CBA है, शीर्ष पर सी के साथ

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

मैं ऐसा करने के लिए कोड कैसे लिख सकता हूँ?

वेब के समाधान से एकत्रित समाधान "अग्रभूमि (स्टैक के ऊपर) को कैसे गतिविधि लाया जाए?"

आप इस FLAG_ACTIVITY_REORDER_TO_FRONT को आज़मा FLAG_ACTIVITY_REORDER_TO_FRONT (दस्तावेज़ का वर्णन वास्तव में आप क्या करना चाहते हैं)

एंड्रॉइड होम स्क्रीन का उपयोग करने वाला सबसे अच्छा तरीका यह था कि ऐप लॉन्चर।

उदाहरण के लिए:

 Intent i = new Intent(this, MyMainActivity.class); i.setAction(Intent.ACTION_MAIN); i.addCategory(Intent.CATEGORY_LAUNCHER); startActivity(i); 

इस तरह, मेरे पैकेज में जो भी गतिविधि सबसे हाल ही में उपयोगकर्ता द्वारा उपयोग की गई थी, उसे फिर सामने सामने लाया गया है। मुझे अपने ऐप के उपयोगकर्ता को वापस लाने के लिए मेरी सेवा के लंबित सूचना का उपयोग करने में यह उपयोगी पाया।

यहां कोड-उदाहरण दिया गया है कि आप यह कैसे कर सकते हैं:

 Intent intent = getIntent(getApplicationContext(), A.class) 

इससे यह सुनिश्चित होगा कि आपके स्टैक पर एक गतिविधि का केवल एक उदाहरण है।

 private static Intent getIntent(Context context, Class<?> cls) { Intent intent = new Intent(context, cls); intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); return intent; } 

मुझे लगता है कि Intent झंडे के संयोजन को चाल करना चाहिए विशेष रूप से, Intent.FLAG_ACTIVITY_CLEAR_TOP और Intent.FLAG_ACTIVITY_NEW_TASKIntent.FLAG_ACTIVITY_NEW_TASK

startActvity से पहले इन झंडे को अपने इरादे में जोड़ें।

FLAG_ACTIVITY_REORDER_TO_FRONT : यदि प्रसंग .startActivity () में उत्तीर्ण किया गया है, तो यह ध्वज लॉन्च गतिविधि को अपने कार्य के इतिहास स्टैक के सामने लाया जाएगा, अगर यह पहले से ही चल रहा है।

 Intent i = new Intent(context, AActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); startActivity(i); 

सामान्य तौर पर मुझे लगता है कि गतिविधि प्रबंधन की इस पद्धति का अनुशंसित नहीं है। स्टैक में दो कदम नीचे एक गतिविधि को सक्रिय करने की समस्या यह है कि इस गतिविधि की संभावना को मार दिया गया है। अपनी गतिविधियों की स्थिति को याद रखने और शुरुआत के साथ उन्हें लॉन्च करने के लिए मेरी सलाह startActivity ()

मुझे यकीन है कि आपने यह पृष्ठ देखा है लेकिन आपकी सुविधा के लिए यह लिंक

i.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);

नोट आपका होमएक्टिविटी लॉन्चमैोड एकल_टास्क होना चाहिए

यदि आप एक अधिसूचना पर क्लिक करते समय स्टैक के शीर्ष पर किसी गतिविधि को लाना चाहते हैं, तो आपको FLAG_ACTIVITY_REORDER_TO_FRONT कार्य करने के लिए निम्न कार्य करने की आवश्यकता हो सकती है:

इसके लिए मेरे लिए एक समाधान प्रसारण रिसीवर बनाना था जो कि सूचना को ट्रिगर करने वाले प्रसारण कार्यों को सुनता है। तो मूल रूप से:

  1. अधिसूचना शुरू करने की गतिविधि के अतिरिक्त एक नाम के साथ एक प्रसारण कार्य को चालू करता है

  2. सूचना प्राप्त होने पर प्रसारण रिसीवर यह पकड़ता है, फिर उस गतिविधि को FLAG_ACTIVITY_REORDER_TO_FRONT फ्लैग का उपयोग करने के लिए एक उद्देश्य बनाता है

  3. गतिविधि गतिविधि स्टैक के शीर्ष पर लाई जाती है, कोई डुप्लिकेट नहीं

यदि आप "लंबितइन्टेन्ट" वर्ग के साथ पुश नोटिफिकेशन प्राप्त करने के लिए "Google क्लाउड संदेश" का उपयोग कर रहे हैं, तो निम्न कोड केवल एक्शन बार में सूचना प्रदर्शित करता है

अधिसूचना पर क्लिक करने से कोई भी गतिविधि नहीं बनाई जाएगी, आखिरी सक्रिय गतिविधि को समस्याओं के बिना वर्तमान स्थिति को बनाए रखना बहाल किया जा सकता है।

Intent notificationIntent = new Intent(this, ActBase.class); **notificationIntent.setAction(Intent.ACTION_MAIN); notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER);** PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.ic_launcher) .setContentTitle("Localtaxi") .setVibrate(vibrate) .setStyle(new NotificationCompat.BigTextStyle().bigText(msg)) .setAutoCancel(true) .setOnlyAlertOnce(true) .setContentText(msg);

mBuilder.setContentIntent(contentIntent);

NotificationManager mNotificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);

mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());

Ciao!