Layar terbaru

Layar Terbaru, juga disebut layar Ringkasan, tugas terbaru daftar aplikasi, atau layar aplikasi terbaru, adalah UI tingkat sistem yang mencantumkan daftar yang terakhir diakses aktivitas dan tugas. Pengguna dapat menavigasi daftar, memilih tugas untuk melanjutkan, atau menghapus tugas dari daftar dengan menggesernya.

Layar Terbaru menggunakan tampilan yang berpusat pada dokumen model—diperkenalkan di Android 5.0 (API tingkat 21)—di mana beberapa kasus aktivitas yang sama yang berisi dokumen berbeda dapat muncul sebagai tugas di Layar terbaru. Misalnya, Google Drive mungkin memiliki tugas untuk setiap beberapa dokumen Google. Setiap dokumen muncul sebagai tugas di tab Terbaru layar:

Layar Terbaru yang menampilkan dua file Google Drive dokumen, masing-masing diwakili sebagai tugas terpisah.

Contoh umum lainnya adalah ketika pengguna menggunakan browser mereka dan mereka mengetuk Bagikan > Gmail. Layar Tulis aplikasi Gmail akan muncul. Mengetuk Tombol Terbaru pada saat itu menunjukkan Chrome dan Gmail berjalan terpisah tugas:

Layar Terbaru yang menampilkan Chrome dan Gmail berjalan sebagai tugas terpisah.

Biasanya, Anda membiarkan sistem mendefinisikan bagaimana tugas dan aktivitas Anda yang ditampilkan di layar Terbaru. Anda tidak perlu memodifikasinya perilaku model. Namun, aplikasi Anda dapat menentukan bagaimana dan kapan aktivitas muncul di Layar terbaru.

Tujuan ActivityManager.AppTask memungkinkan Anda mengelola tugas, dan flag aktivitas kelas Class Intent memungkinkan Anda menentukan kapan aktivitas ditambahkan atau dihapus dari layar Terbaru. Selain itu, Atribut <activity> memungkinkan Anda menetapkan perilaku di manifes.

Menambahkan tugas ke layar Terbaru

Menggunakan flag class Intent untuk menambahkan tugas memberi Anda kontrol yang lebih besar atas waktu dan cara dokumen dibuka atau dibuka kembali di layar {i>Recents<i}. Saat Anda menggunakan <activity>, Anda dapat memilih antara selalu membuka dokumen di tugas baru atau menggunakan kembali dokumen yang sudah ada tugas untuk dokumen itu.

Menggunakan flag Intent untuk menambahkan tugas

Saat membuat dokumen baru untuk aktivitas Anda, Anda memanggil metode startActivity() , dengan meneruskan intent yang akan meluncurkan aktivitas ke sini. Untuk menyisipkan logika sehingga sistem memperlakukan aktivitas Anda sebagai tugas baru di di layar, teruskan FLAG_ACTIVITY_NEW_DOCUMENT flag di addFlags() dari Intent yang meluncurkan aktivitas Anda.

Jika Anda menetapkan FLAG_ACTIVITY_MULTIPLE_TASK ketika Anda membuat dokumen baru, sistem akan selalu membuat tugas baru dengan aktivitas target sebagai root. Setelan ini memungkinkan dokumen yang sama dibuka di lebih dari satu tugas. Kode berikut menunjukkan bagaimana yang melakukan hal ini:

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

}

Ketika aktivitas utama meluncurkan aktivitas baru, sistem akan mencari melalui tugas yang ada untuk tujuan yang intent-nya cocok dengan nama komponen intent dan data intent untuk aktivitas tersebut. Jika tugas tidak ditemukan, atau intent yang ada di dalamnya FLAG_ACTIVITY_MULTIPLE_TASK , tugas baru dibuat dengan aktivitas sebagai root-nya.

Jika sistem menemukan tugas yang intent-nya cocok dengan nama komponen intent dan data intent, fungsi ini membawa tugas tersebut ke depan dan meneruskan intent baru ke onNewIntent() Aktivitas baru mendapatkan intent dan membuat dokumen baru di tab Terbaru seperti yang ditunjukkan pada contoh berikut:

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

Gunakan atribut aktivitas untuk menambahkan tugas

Suatu aktivitas juga bisa menetapkan dalam manifesnya bahwa aktivitas itu selalu diluncurkan ke dalam tugas dengan menggunakan <activity> atribut android:documentLaunchMode. Atribut ini memiliki empat nilai, yang menghasilkan efek berikut saat pengguna membuka dokumen dengan aplikasi:

intoExisting
Aktivitas menggunakan ulang tugas yang ada untuk dokumen. Ini sama dengan mengatur FLAG_ACTIVITY_NEW_DOCUMENT flag tanpa menyetel FLAG_ACTIVITY_MULTIPLE_TASK flag, seperti yang dijelaskan dalam Menggunakan flag Intent untuk menambahkan tugas.
always
Aktivitas ini membuat tugas baru untuk dokumen, meskipun dokumen itu sudah dibuka. Menggunakan nilai ini sama dengan mengatur kedua Tanda FLAG_ACTIVITY_NEW_DOCUMENT dan FLAG_ACTIVITY_MULTIPLE_TASK.
none
Aktivitas tidak membuat tugas baru untuk dokumen. Terbaru layar memperlakukan aktivitas seperti default-nya. Menampilkan satu tugas untuk aplikasi, yang dilanjutkan dari aktivitas apa pun yang terakhir dipanggil pengguna.
never
Aktivitas tidak membuat tugas baru untuk dokumen. Menetapkan nilai ini akan menggantikan perilaku FLAG_ACTIVITY_NEW_DOCUMENT dan FLAG_ACTIVITY_MULTIPLE_TASK penanda. Jika salah satunya disetel dalam intent, dan layar Terbaru menampilkan satu tugas untuk aplikasi, tugas itu dilanjutkan dari aktivitas apa pun terakhir dipanggil.

Menghapus tugas

Secara default, tugas dokumen otomatis keluar dari layar Terbaru setelah aktivitasnya selesai. Anda dapat mengganti perilaku ini dengan ActivityManager.AppTask dengan flag Intent, atau dengan atribut <activity>.

Anda selalu bisa mengecualikan tugas dari layar Terbaru sepenuhnya dengan mengatur atribut <activity> android:excludeFromRecents ke true.

Anda dapat menetapkan jumlah maksimum tugas yang dapat disertakan aplikasi Anda dalam Layar terbaru dengan menyetel Atribut <activity> android:maxRecents menjadi nilai bilangan bulat. Ketika jumlah tugas maksimum tercapai, tugas yang paling jarang digunakan akan hilang dari layar Terbaru. Defaultnya adalah 16, dan nilai maksimumnya adalah 50 (25 untuk perangkat dengan memori rendah). Nilai lebih sedikit dari 1 tidak valid.

Menggunakan class AppTask untuk menghapus tugas

Dalam aktivitas yang membuat tugas baru di layar Terbaru, Anda dapat menentukan kapan harus menghapus tugas dan menyelesaikan semua aktivitas yang terkait dengannya dengan memanggil finishAndRemoveTask() berikut:

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

Pertahankan tugas yang sudah selesai

Jika Anda ingin mempertahankan tugas di layar Terbaru, meskipun aktivitasnya telah selesai, teruskan FLAG_ACTIVITY_RETAIN_IN_RECENTS tanda di Metode addFlags() dari intent yang meluncurkan aktivitas.

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

Untuk memperoleh efek yang sama, setel atribut Atribut <activity> android:autoRemoveFromRecents ke false. Nilai defaultnya adalah true untuk aktivitas dokumen dan false untuk aktivitas rutin. Penggunaan atribut ini akan mengganti FLAG_ACTIVITY_RETAIN_IN_RECENTS.

Mengaktifkan berbagi URL terbaru (khusus Pixel)

Di perangkat Pixel yang menjalankan Android 12 atau yang lebih baru, pengguna dapat berbagi link ke konten web yang baru saja dilihat langsung dari layar Terbaru. Setelah berkunjung konten dalam aplikasi, pengguna dapat menggeser ke layar Terbaru dan menemukan aplikasi tempat mereka melihat konten, lalu ketuk tombol link untuk menyalin atau membagikan .

Layar Terbaru dengan link untuk dibagikan konten web yang dilihat baru-baru ini.

Aplikasi apa pun dapat mengaktifkan penautan Terbaru untuk pengguna dengan menyediakan UI web dan mengganti onProvideAssistContent(), seperti yang ditunjukkan dalam contoh berikut:

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