'हाल ही के' स्क्रीन, इसे 'खास जानकारी' स्क्रीन भी कहा जाता है. यह हाल ही का टास्क है सूची या हाल ही के ऐप्लिकेशन स्क्रीन, सिस्टम-लेवल का यूज़र इंटरफ़ेस (यूआई) होता है. इसमें, हाल ही में ऐक्सेस किए गए ऐप्लिकेशन की सूची होती है गतिविधियां और टास्क. उपयोगकर्ता, सूची में नेविगेट करने के लिए, किसी टास्क को चुन सकता है या सूची से किसी टास्क को हटाने के लिए उसे स्वाइप करें.
हाल ही की स्क्रीन दस्तावेज़-आधारित मॉडल—Android 5.0 (एपीआई) में पेश किया गया लेवल 21)—जिसमें कई इंस्टेंस अलग-अलग दस्तावेज़ों वाली एक ही गतिविधि, टास्क के तौर पर दिख सकती है हाल ही की स्क्रीन. उदाहरण के लिए, Google Drive में हर एक के लिए एक टास्क हो सकता है क्वेरी डालने के लिए इस्तेमाल किया जाता है. हर दस्तावेज़, 'हाल ही के' सेक्शन में टास्क के तौर पर दिखता है स्क्रीन:
एक और सामान्य उदाहरण यह है कि जब उपयोगकर्ता अपने ब्राउज़र का इस्तेमाल कर रहा हो और वह शेयर करें > Gmail. Gmail ऐप्लिकेशन की लिखें स्क्रीन दिखेगी. टैप करके हाल ही का बटन उस समय दिखाता है कि Chrome और Gmail अलग-अलग चल रहे हैं टास्क:
आम तौर पर, सिस्टम को यह तय करने का मौका दिया जाता है कि आपके टास्क और गतिविधियां कैसी हों हाल ही की स्क्रीन में दिखाया जाता है. आपको इसे बदलने की ज़रूरत नहीं है व्यवहार. हालांकि, आपका ऐप्लिकेशन यह तय कर सकता है कि हाल ही की स्क्रीन.
कॉन्टेंट बनाने
ActivityManager.AppTask
क्लास से आपको टास्क और गतिविधि फ़्लैग को मैनेज करने की सुविधा मिलती है
Intent
क्लास आपको यह बताने देती है कि
गतिविधि को 'हाल ही के' स्क्रीन से जोड़ा या हटाया जाता है. साथ ही,
<activity>
एट्रिब्यूट की मदद से, सेट किए गए
मेनिफ़ेस्ट में क्या कार्रवाई होती है.
'हाल ही की' स्क्रीन पर टास्क जोड़ें
Intent
क्लास के फ़्लैग का इस्तेमाल करके
टास्क जोड़ने से आपको इस बात पर ज़्यादा कंट्रोल मिलता है कि दस्तावेज़ कब और कैसे खोला जाता है या
'हाल ही के' स्क्रीन पर फिर से खोला गया. जब आप
<activity>
एट्रिब्यूट के लिए, आप ये काम कर सकते हैं
दस्तावेज़ को हमेशा नए टास्क में खोलने या मौजूदा
टास्क पर क्लिक करें.
टास्क जोड़ने के लिए इंटेंट फ़्लैग का इस्तेमाल करें
जब आप अपनी गतिविधि के लिए नया दस्तावेज़ बनाते हैं, तो आपको
startActivity()
तरीका है, जो गतिविधि को लॉन्च करने वाले इंटेंट को पास करता है. लॉजिकल कोड डालने के लिए
ब्रेक लें, ताकि सिस्टम हाल ही के में आपकी गतिविधि को एक नया टास्क मान सके
स्क्रीन, तो
FLAG_ACTIVITY_NEW_DOCUMENT
addFlags()
में फ़्लैग करें
को लॉन्च करने का तरीका Intent
गतिविधि.
अगर आपने FLAG_ACTIVITY_MULTIPLE_TASK
को सेट किया है, तो
फ़्लैग करते हैं, तो सिस्टम हमेशा एक नया टास्क बना देता है जिसमें
टारगेट गतिविधि को रूट बनाया जा सकता है. इस सेटिंग से एक ही दस्तावेज़ को
को एक से ज़्यादा टास्क में खोला गया है. नीचे दिया गया कोड दिखाता है कि कैसे मुख्य
गतिविधि ऐसा करती है:
fun createNewDocument(view: View) { val newDocumentIntent = newDocumentIntent() if (useMultipleTasks) { newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK) } startActivity(newDocumentIntent) } private fun newDocumentIntent(): Intent = Intent(this, NewDocumentActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT or android.content.Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS) putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, documentCounter++) }
public void createNewDocument(View view) { final Intent newDocumentIntent = newDocumentIntent(); if (useMultipleTasks) { newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK); } startActivity(newDocumentIntent); } private Intent newDocumentIntent() { boolean useMultipleTasks = checkbox.isChecked(); final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class); newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT); newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, documentCounter++); return newDocumentIntent; } }
जब मुख्य गतिविधि कोई नई गतिविधि लॉन्च करती है, तो सिस्टम
मौजूदा टास्क जिनका इंटेंट इंटेंट कॉम्पोनेंट के नाम से मेल खाता हो और
इंटेंट डेटा का इस्तेमाल किया जाता है. अगर टास्क नहीं मिला या उसका इंटेंट शामिल है
FLAG_ACTIVITY_MULTIPLE_TASK
फ़्लैग करते हैं, तो एक नया टास्क बन जाता है, जिसमें गतिविधि को उसका रूट माना जाता है.
अगर सिस्टम को कोई ऐसा टास्क मिलता है जिसका इंटेंट, इंटेंट कॉम्पोनेंट के नाम से मेल खाता है और
इंटेंट डेटा का इस्तेमाल किया है, तो यह उस टास्क को सामने लाता है और नए इंटेंट को पास करता है
onNewIntent()
.
नई गतिविधि को इंटेंट मिलता है और वह 'हाल ही के' में एक नया दस्तावेज़ बनाता है
स्क्रीन, जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है:
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_new_document) documentCount = intent .getIntExtra(DocumentCentricActivity.KEY_EXTRA_NEW_DOCUMENT_COUNTER, 0) documentCounterTextView = findViewById(R.id.hello_new_document_text_view) setDocumentCounterText(R.string.hello_new_document_counter) } override fun onNewIntent(newIntent: Intent) { super.onNewIntent(newIntent) /* If FLAG_ACTIVITY_MULTIPLE_TASK has not been used, this Activity will be reused. */ setDocumentCounterText(R.string.reusing_document_counter) }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_new_document); documentCount = getIntent() .getIntExtra(DocumentCentricActivity.KEY_EXTRA_NEW_DOCUMENT_COUNTER, 0); documentCounterTextView = (TextView) findViewById( R.id.hello_new_document_text_view); setDocumentCounterText(R.string.hello_new_document_counter); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); /* If FLAG_ACTIVITY_MULTIPLE_TASK has not been used, this activity is reused to create a new document. */ setDocumentCounterText(R.string.reusing_document_counter); }
टास्क जोड़ने के लिए, ऐक्टिविटी एट्रिब्यूट का इस्तेमाल करें
कोई ऐक्टिविटी अपने मेनिफ़ेस्ट में यह भी बता सकती है कि वह हमेशा किसी नई गतिविधि में लॉन्च होती है
<activity>
का इस्तेमाल करके टास्क पूरा करें
एट्रिब्यूट android:documentLaunchMode
का इस्तेमाल करें.
इस एट्रिब्यूट की चार वैल्यू होती हैं. इन वैल्यू के आधार पर, उपयोगकर्ता को ये इफ़ेक्ट मिलते हैं
ऐप्लिकेशन वाला दस्तावेज़ खोलता है:
intoExisting
- गतिविधि पर, दस्तावेज़ के लिए पहले से मौजूद टास्क का फिर से इस्तेमाल किया जाता है. यह ठीक वैसा ही है जैसा
FLAG_ACTIVITY_NEW_DOCUMENT
सेटिंग के बिना फ़्लैग करेंFLAG_ACTIVITY_MULTIPLE_TASK
फ़्लैग करें, जैसा कि टास्क जोड़ने के लिए इंटेंट फ़्लैग का इस्तेमाल करना सेक्शन. always
- गतिविधि से दस्तावेज़ के लिए एक नया टास्क बनता है, भले ही वह दस्तावेज़
पहले से खुला है. इस वैल्यू का इस्तेमाल करना, दोनों
FLAG_ACTIVITY_NEW_DOCUMENT
औरFLAG_ACTIVITY_MULTIPLE_TASK
फ़्लैग. none
- गतिविधि से दस्तावेज़ के लिए नया टास्क नहीं बनता है. द रीसेंट्स स्क्रीन, गतिविधि को डिफ़ॉल्ट रूप से ऐसे ही देखती है. इससे सिर्फ़ एक टास्क दिखता है किसी भी गतिविधि को फिर से शुरू करता है.
never
- गतिविधि से दस्तावेज़ के लिए नया टास्क नहीं बनता है. यह वैल्यू सेट करें
के व्यवहार को ओवरराइड करता है
FLAG_ACTIVITY_NEW_DOCUMENT
औरFLAG_ACTIVITY_MULTIPLE_TASK
फ़्लैग. अगर इनमें से किसी भी एक को इंटेंट और 'हाल ही के' स्क्रीन में सेट किया गया हो ऐप्लिकेशन के लिए एक टास्क दिखाता है. टास्क को उस किसी भी गतिविधि से फिर से शुरू किया जाता है उपयोगकर्ता ने पिछली बार कब शुरू किया था.
कार्य निकालें
डिफ़ॉल्ट रूप से, 'हाल ही के' स्क्रीन से दस्तावेज़ का कोई टास्क अपने-आप हट जाता है
गतिविधि खत्म होने पर. आप इस व्यवहार को
ActivityManager.AppTask
क्लास, Intent
फ़्लैग के साथ या
<activity>
एट्रिब्यूट की वैल्यू सबमिट करें.
यह सेटिंग
<activity>
एट्रिब्यूट
android:excludeFromRecents
true
तक.
यह तय किया जा सकता है कि आपका ऐप्लिकेशन ज़्यादा से ज़्यादा कितने टास्क
हाल ही में देखी गई स्क्रीन
<activity>
एट्रिब्यूट
android:maxRecents
से
पूर्णांक वैल्यू का इस्तेमाल करें. जब टास्क की तय संख्या पूरी हो जाए,
हाल ही में इस्तेमाल किया गया सबसे कम इस्तेमाल किया गया टास्क, 'हाल ही के' स्क्रीन से गायब हो जाता है. डिफ़ॉल्ट संख्या 16 है,
और ज़्यादा से ज़्यादा वैल्यू 50 (कम मेमोरी वाले डिवाइसों पर 25) होती है. कम वैल्यू
1 से ज़्यादा मान्य नहीं हैं.
टास्क हटाने के लिए AppTask क्लास का इस्तेमाल करें
हाल ही की स्क्रीन में कोई नया टास्क बनाने वाली गतिविधि में, ये काम किए जा सकते हैं
टास्क को कब हटाना है और उससे जुड़ी सभी गतिविधियों को कब पूरा करना है
कॉल करो
finishAndRemoveTask()
तरीका:
fun onRemoveFromOverview(view: View) { // It is good pratice to remove a document from the overview stack if not needed anymore. finishAndRemoveTask() }
public void onRemoveFromRecents(View view) { // The document is no longer needed; remove its task. finishAndRemoveTask(); }
पूरे हो चुके टास्क बनाए रखें
अगर आपको किसी टास्क को 'हाल ही के' स्क्रीन पर बनाए रखना है, भले ही उसकी गतिविधि में
खत्म हो गया है, तो
FLAG_ACTIVITY_RETAIN_IN_RECENTS
फ़्लैग का निशान
addFlags()
इंटेंट, ताकि गतिविधि को लॉन्च किया जा सके.
private fun newDocumentIntent() = Intent(this, NewDocumentActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT or android.content.Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS) putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, getAndIncrement()) }
private Intent newDocumentIntent() { final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class); newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT | android.content.Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS); newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, getAndIncrement()); return newDocumentIntent; }
इसी प्रभाव को पाने के लिए,
<activity>
एट्रिब्यूट
android:autoRemoveFromRecents
false
तक. दस्तावेज़ गतिविधियों के लिए डिफ़ॉल्ट मान true
और इसके लिए false
है
नियमित गतिविधियां. इस एट्रिब्यूट का इस्तेमाल करने पर,
FLAG_ACTIVITY_RETAIN_IN_RECENTS
फ़्लैग.
हाल ही में खोले गए यूआरएल शेयर करने की सुविधा चालू करें (सिर्फ़ Pixel फ़ोन के लिए)
Android 12 या इसके बाद के वर्शन वाले Pixel डिवाइसों पर, लोग लिंक शेयर कर सकते हैं हाल ही में देखे गए वेब कॉन्टेंट को सीधे हाल ही की स्क्रीन से देखा जा सकता है. जाने के बाद किसी ऐप्लिकेशन के कॉन्टेंट को ऐक्सेस करने के लिए, उपयोगकर्ता हाल ही की स्क्रीन पर स्वाइप कर सकता है और ऐप्लिकेशन को ढूँढ सकता है जहाँ उन्होंने कॉन्टेंट देखा है. इसके बाद, लिंक बटन पर टैप करके यूआरएल.
कोई भी ऐप्लिकेशन, वेब यूज़र इंटरफ़ेस (यूआई) और
ओवरराइड करना
onProvideAssistContent()
जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है:
class MainActivity : AppCompatActivity() { protected fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } fun onProvideAssistContent(outContent: AssistContent) { super.onProvideAssistContent(outContent) outContent.setWebUri(Uri.parse("https://example.com/myCurrentPage")) } }
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public void onProvideAssistContent(AssistContent outContent) { super.onProvideAssistContent(outContent); outContent.setWebUri(Uri.parse("https://example.com/myCurrentPage")); } }