जब मेरी सेवा को उपयोगकर्ता के साथ बातचीत करने की आवश्यकता होती है तो यह एक गतिविधि शुरू करता है:

Intent i = new Intent(context, Ringer_intent.class);
i.putExtra("PHONE_NUMBER", phone_number);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
// TODO: This prevents onDestroy --> why???
i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

context.startActivity(i);

यह सुनिश्चित करने के लिए कि Ringer_intent दो बार नहीं चलेगा मैंने जोड़ा

i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

और मैंने अपनी गतिविधि में भी जोड़ा

@Override
public void onNewIntent (Intent intent) {
}

मैं चाहता हूं कि मेरी रिंगर_इंटेंट गतिविधि समाप्त होने पर चली जाए। मैं नहीं चाहता कि उपयोगकर्ता इसे वापस एफजी में ला सके।
इस तरह यह FLAG_ACTIVITY_SINGLE_TOP . के साथ काम करता है
लेकिन FLAG_ACTIVITY_SINGLE_TOP के साथ मेरी गतिविधि बीजी में बनी हुई है ...
मैंने निम्नलिखित जोड़ा:

@Override
public void onStop() { Log.i(LOG_TAG, "Ringer_intent.onStop()"); // For Debugging
    super.onStop();
}

@Override
public void onDestroy() { Log.i(LOG_TAG, "Ringer_intent.onDestroy()"); // For Debugging
    super.onDestroy();
    Log.e(LOG_TAG, "Still not dead - kill it!");
    // Bad idea - it kills my service as well !!!
    // android.os.Process.killProcess(android.os.Process.myPid());
}

तो मैं देख सकता हूँ कि Androids दोनों को कॉल कर रहा है
पर मेरी हरकत अभी बाकी है...
कोई उपाय?
धन्यवाद

नोट:
मैंने onDestroy() से फिनिश() को कॉल करने का प्रयास किया - मदद नहीं की

2
Ori 22 सितंबर 2017, 21:57
आपके प्रश्न को समझना अत्यंत कठिन है :-( कृपया अपना मेनिफेस्ट पोस्ट करें और यह समझाने का प्रयास करें कि आप क्या करना चाहते हैं और क्या काम नहीं कर रहा है।
 – 
David Wasser
23 सितंबर 2017, 08:47
साथ ही, आप Intent.setFlags() को वैसे ही कॉल नहीं कर सकते जैसे आप कर रहे हैं। जब आप setFlags() को कॉल करते हैं तो यह आपके द्वारा setFlags() को दिए गए तर्क के साथ फ़्लैग को अधिलेखित कर देता है। इसका मतलब है कि setFlags() को 3 बार कॉल करने के बाद, केवल वही फ़्लैग सेट किया जाएगा, जिसे आपने setFlags() को पिछली कॉल में निर्दिष्ट किया था। आप setFlags() के बजाय addFlags() का उपयोग कर सकते हैं, या आप setFlags() को एक बार कॉल कर सकते हैं और सभी फ़्लैग को तर्क के रूप में पास कर सकते हैं, जैसे: setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS | Intent.FLAG_ACTIVITY_SINGLE_TOP)
 – 
David Wasser
23 सितंबर 2017, 08:50
धन्यवाद!! क्या गलती है :-) जैसा कि डेविड ने समझाया - Intent.setFlags() पर मेरी आखिरी कॉल ने FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS को रद्द कर दिया था और यही कारण है कि मेरी गतिविधि UI उपयोगकर्ता के लिए bg पर उपलब्ध रहती है। FLAG_ACTIVITY_SINGLE_TOP से कुछ लेना-देना नहीं :-) फिर से धन्यवाद।
 – 
Ori
23 सितंबर 2017, 13:58
खुशी है कि आपकी समस्या हल हो गई। मैंने इसे एक उत्तर के रूप में पोस्ट किया है जिसे आप उत्तर के आगे हरे चेकमार्क पर क्लिक करके स्वीकार कर सकते हैं। यह प्रश्न को खुले प्रश्नों की सूची से हटा देगा और किसी और की मदद कर सकता है।
 – 
David Wasser
23 सितंबर 2017, 16:55

1 उत्तर

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

आप Intent.setFlags() को वैसे ही कॉल नहीं कर सकते जैसे आप कर रहे हैं। जब आप setFlags() को कॉल करते हैं तो यह आपके द्वारा setFlags() को दिए गए तर्क के साथ फ़्लैग को अधिलेखित कर देता है। इसका मतलब है कि setFlags() को तीन बार कॉल करने के बाद, केवल वही फ़्लैग सेट किया जाएगा, जिसे आपने setFlags() को पिछली कॉल में निर्दिष्ट किया था। आप setFlags() के बजाय addFlags() का उपयोग कर सकते हैं, या आप setFlags() को एक बार कॉल कर सकते हैं और सभी झंडों को तर्क के रूप में पास कर सकते हैं, जैसे: setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS | Intent.FLAG_ACTIVITY_SINGLE_TOP)

0
David Wasser 23 सितंबर 2017, 16:54