हाल ही की स्क्रीन

'हाल ही के' स्क्रीन, इसे 'खास जानकारी' स्क्रीन भी कहा जाता है. यह हाल ही का टास्क है सूची या हाल ही के ऐप्लिकेशन स्क्रीन, सिस्टम-लेवल का यूज़र इंटरफ़ेस (यूआई) होता है. इसमें, हाल ही में ऐक्सेस किए गए ऐप्लिकेशन की सूची होती है गतिविधियां और टास्क. उपयोगकर्ता, सूची में नेविगेट करने के लिए, किसी टास्क को चुन सकता है या सूची से किसी टास्क को हटाने के लिए उसे स्वाइप करें.

हाल ही की स्क्रीन दस्तावेज़-आधारित मॉडल—Android 5.0 (एपीआई) में पेश किया गया लेवल 21)—जिसमें कई इंस्टेंस अलग-अलग दस्तावेज़ों वाली एक ही गतिविधि, टास्क के तौर पर दिख सकती है हाल ही की स्क्रीन. उदाहरण के लिए, Google Drive में हर एक के लिए एक टास्क हो सकता है क्वेरी डालने के लिए इस्तेमाल किया जाता है. हर दस्तावेज़, 'हाल ही के' सेक्शन में टास्क के तौर पर दिखता है स्क्रीन:

हाल ही में खोजी गई स्क्रीन पर दो Google Drive दिख रही हैं दस्तावेज़ों को अलग-अलग टास्क के तौर पर दिखाया जाता है.

एक और सामान्य उदाहरण यह है कि जब उपयोगकर्ता अपने ब्राउज़र का इस्तेमाल कर रहा हो और वह शेयर करें > Gmail. Gmail ऐप्लिकेशन की लिखें स्क्रीन दिखेगी. टैप करके हाल ही का बटन उस समय दिखाता है कि Chrome और Gmail अलग-अलग चल रहे हैं टास्क:

हाल ही में खोजी गई स्क्रीन पर Chrome और Gmail दिख रहे हैं अलग-अलग टास्क पर चल रहा हो.

आम तौर पर, सिस्टम को यह तय करने का मौका दिया जाता है कि आपके टास्क और गतिविधियां कैसी हों हाल ही की स्क्रीन में दिखाया जाता है. आपको इसे बदलने की ज़रूरत नहीं है व्यवहार. हालांकि, आपका ऐप्लिकेशन यह तय कर सकता है कि हाल ही की स्क्रीन.

कॉन्टेंट बनाने ActivityManager.AppTask क्लास से आपको टास्क और गतिविधि फ़्लैग को मैनेज करने की सुविधा मिलती है Intent क्लास आपको यह बताने देती है कि गतिविधि को 'हाल ही के' स्क्रीन से जोड़ा या हटाया जाता है. साथ ही, <activity> एट्रिब्यूट की मदद से, सेट किए गए मेनिफ़ेस्ट में क्या कार्रवाई होती है.

'हाल ही की' स्क्रीन पर टास्क जोड़ें

Intent क्लास के फ़्लैग का इस्तेमाल करके टास्क जोड़ने से आपको इस बात पर ज़्यादा कंट्रोल मिलता है कि दस्तावेज़ कब और कैसे खोला जाता है या 'हाल ही के' स्क्रीन पर फिर से खोला गया. जब आप <activity> एट्रिब्यूट के लिए, आप ये काम कर सकते हैं दस्तावेज़ को हमेशा नए टास्क में खोलने या मौजूदा टास्क पर क्लिक करें.

टास्क जोड़ने के लिए इंटेंट फ़्लैग का इस्तेमाल करें

जब आप अपनी गतिविधि के लिए नया दस्तावेज़ बनाते हैं, तो आपको startActivity() तरीका है, जो गतिविधि को लॉन्च करने वाले इंटेंट को पास करता है. लॉजिकल कोड डालने के लिए ब्रेक लें, ताकि सिस्टम हाल ही के में आपकी गतिविधि को एक नया टास्क मान सके स्क्रीन, तो FLAG_ACTIVITY_NEW_DOCUMENT addFlags() में फ़्लैग करें को लॉन्च करने का तरीका Intent गतिविधि.

अगर आपने FLAG_ACTIVITY_MULTIPLE_TASK को सेट किया है, तो फ़्लैग करते हैं, तो सिस्टम हमेशा एक नया टास्क बना देता है जिसमें टारगेट गतिविधि को रूट बनाया जा सकता है. इस सेटिंग से एक ही दस्तावेज़ को को एक से ज़्यादा टास्क में खोला गया है. नीचे दिया गया कोड दिखाता है कि कैसे मुख्य गतिविधि ऐसा करती है:

Kotlin

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++)
        }

Java

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(). नई गतिविधि को इंटेंट मिलता है और वह 'हाल ही के' में एक नया दस्तावेज़ बनाता है स्क्रीन, जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है:

Kotlin

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)
}

Java

@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() तरीका:

Kotlin

fun onRemoveFromOverview(view: View) {
    // It is good pratice to remove a document from the overview stack if not needed anymore.
    finishAndRemoveTask()
}

Java

public void onRemoveFromRecents(View view) {
    // The document is no longer needed; remove its task.
    finishAndRemoveTask();
}

पूरे हो चुके टास्क बनाए रखें

अगर आपको किसी टास्क को 'हाल ही के' स्क्रीन पर बनाए रखना है, भले ही उसकी गतिविधि में खत्म हो गया है, तो FLAG_ACTIVITY_RETAIN_IN_RECENTS फ़्लैग का निशान addFlags() इंटेंट, ताकि गतिविधि को लॉन्च किया जा सके.

Kotlin

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())
        }

Java

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() जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है:

Kotlin

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"))
    }
}

Java

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"));
    }
}