Letzte Bildschirme

Der Bildschirm „Letzte“, auch Übersichtsbildschirm genannt, „Liste“ oder „Zuletzt verwendete Apps“ ist eine Benutzeroberfläche auf Systemebene, auf der die zuletzt aufgerufenen Aktivitäten und Aufgaben. Die Nutzenden können durch die Liste navigieren, eine Aufgabe auswählen, oder eine Aufgabe aus der Liste entfernen, indem Sie sie wegwischen.

Auf dem Bildschirm „Letzte“ werden Dokumente Modell – Einführung in Android 5.0 (API) Ebene 21) angezeigt, bei der mehrere Instanzen kann dieselbe Aktivität mit unterschiedlichen Dokumenten als Aufgaben im Bildschirm „Letzte“. So kann es in Google Drive beispielsweise für jede Ihrer in verschiedenen Google-Dokumenten. Jedes Dokument wird unter „Letzte“ als Aufgabe angezeigt. Bildschirm:

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
Der Bildschirm „Letzte“ mit zwei Google Drive-Dateien Dokumente, die jeweils als separate Aufgabe dargestellt werden.

Ein weiteres häufiges Beispiel ist, wenn Nutzende im Browser Teilen > Gmail: Der Bildschirm Schreiben der Gmail App wird angezeigt. Tippen Sie auf das Symbol Die Schaltfläche „Letzte Apps“ zeigt, dass Chrome und Gmail separat ausgeführt werden. Aufgaben:

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
Der Bildschirm „Letzte“ mit Chrome und Gmail als separate Aufgaben ausgeführt werden.

Normalerweise lassen Sie das System definieren, wie Ihre Aufgaben und Aktivitäten die auf dem Bildschirm „Zuletzt verwendet“ angezeigt werden. Sie müssen hier nichts ändern verhalten. Ihre App kann jedoch festlegen, wie und wann Aktivitäten im Zuletzt verwendet.

Die ActivityManager.AppTask -Klasse können Sie Aufgaben und die Aktivitäts-Flags der Intent können Sie festlegen, Aktivitäten werden zum Bildschirm „Letzte“ hinzugefügt oder daraus entfernt. Die Mit den <activity>-Attributen können Sie das Verhalten im Manifest.

Aufgaben zum Bildschirm „Letzte“ hinzufügen

Mit den Flags der Klasse Intent können Sie eine Aufgabe hinzufügen, haben Sie mehr Kontrolle darüber, wann und wie ein Dokument geöffnet oder unter "Letzte" geöffnet. Wenn Sie die <activity>-Attribute können Sie das Dokument immer in einer neuen Aufgabe öffnen oder ein vorhandenes für das Dokument.

Mit dem Intent-Flag eine Aufgabe hinzufügen

Wenn Sie ein neues Dokument für Ihre Aktivität erstellen, rufen Sie das startActivity() und übergibt den Intent, der die Aktivität startet. So fügen Sie ein logisches ab, damit das System Ihre Aktivität im Bereich „Letzte“ als neue Aufgabe behandelt Bildschirm, übergeben Sie FLAG_ACTIVITY_NEW_DOCUMENT Flag im addFlags() des Intent-Objekts, das die Aktivitäten.

Wenn Sie den FLAG_ACTIVITY_MULTIPLE_TASK festlegen Flag, wenn Sie das neue Dokument erstellen, erstellt das System immer eine neue Aufgabe mit die Zielaktivität als Stamm. Mit dieser Einstellung kann dasselbe Dokument in mehr als einer Aufgabe geöffnet. Der folgende Code zeigt, wie die dies geschieht:

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

}

Wenn die Hauptaktivität eine neue Aktivität startet, durchsucht das System vorhandene Aufgaben für einen Nutzer, dessen Intent mit dem Namen der Intent-Komponente übereinstimmt und die Absichtsdaten der Aktivität. Wenn die Aufgabe nicht gefunden wurde oder der Intent FLAG_ACTIVITY_MULTIPLE_TASK wird eine neue Aufgabe mit der Aktivität als Stamm erstellt.

Wenn das System eine Aufgabe findet, deren Intent dem Namen der Intent-Komponente entspricht, und Intent-Daten zu analysieren, bringt sie diese Aufgabe in den Vordergrund und übergibt den neuen Intent an onNewIntent() Die neue Aktivität ruft den Intent ab und erstellt unter „Recents“ (Zuletzt verwendet) ein neues Dokument wie im folgenden Beispiel gezeigt:

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

Aufgaben mithilfe des Attributs „Aktivität“ hinzufügen

Eine Aktivität kann in ihrem Manifest auch angeben, dass sie immer in einem neuen mithilfe der <activity> Attribut android:documentLaunchMode. Dieses Attribut hat vier Werte, die folgende Auswirkungen haben, wenn der Nutzer öffnet ein Dokument mit der Anwendung:

intoExisting
Durch die Aktivität wird eine vorhandene Aufgabe für das Dokument wiederverwendet. Dies entspricht der Einstellung FLAG_ACTIVITY_NEW_DOCUMENT kennzeichnen, ohne den Parameter FLAG_ACTIVITY_MULTIPLE_TASK ein, wie in den Mithilfe des Intent-Flags eine Aufgabe hinzufügen
always
Durch die Aktivität wird eine neue Aufgabe für das Dokument erstellt, auch wenn das Dokument bereits geöffnet ist. Die Verwendung dieses Werts entspricht der Einstellung Die Flags FLAG_ACTIVITY_NEW_DOCUMENT und FLAG_ACTIVITY_MULTIPLE_TASK.
none
Durch die Aktivität wird keine neue Aufgabe für das Dokument erstellt. The Recents behandelt die Aktivität wie standardmäßig. Es wird eine einzelne Aufgabe angezeigt. für die App, die bei jeder Aktivität fortgesetzt wird, die der Nutzer zuletzt aufgerufen hat.
never
Durch die Aktivität wird keine neue Aufgabe für das Dokument erstellt. Diesen Wert festlegen außer Kraft setzen, das Verhalten der FLAG_ACTIVITY_NEW_DOCUMENT und FLAG_ACTIVITY_MULTIPLE_TASK Flags. Wenn eine dieser Optionen im Intent festgelegt ist und auf dem Bildschirm „Recents“ (Zuletzt verwendet) eine einzelne Aufgabe für die App anzeigt, wird sie bei jeder Aktivität fortgesetzt, Nutzer zuletzt aufgerufen.

Aufgaben entfernen

Standardmäßig wird eine Dokumentaufgabe automatisch den Bildschirm „Zuletzt verwendet“ verlassen. sobald die Aktivität beendet ist. Sie können dieses Verhalten mit der Methode ActivityManager.AppTask class, mit dem Flag Intent oder mit ein <activity>-Attribut.

Sie können eine Aufgabe jederzeit vollständig vom Bildschirm „Letzte“ ausschließen, indem Sie Das Attribut <activity> android:excludeFromRecents an true.

Sie können die maximale Anzahl von Aufgaben festlegen, die Ihre App in der „Zuletzt verwendet“, indem Sie die Attribut „<activity>android:maxRecents in ein Ganzzahlwert. Wenn die maximale Anzahl von Aufgaben erreicht ist, wird die zuletzt verwendete Aufgabe nicht mehr auf dem Bildschirm „Zuletzt verwendet“ angezeigt. Der Standardwert ist 16, und der Höchstwert 50 (25 auf Geräten mit geringem Speicher). Weniger Werte als 1 sind ungültig.

Aufgaben mithilfe der AppTask-Klasse entfernen

In der Aktivität, mit der eine neue Aufgabe auf dem Bildschirm „Letzte“ erstellt wird, können Sie geben an, wann die Aufgabe entfernt und alle damit verbundenen Aktivitäten beendet werden sollen, indem das Aufrufen der 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();
}

Erledigte Aufgaben beibehalten

Wenn Sie eine Aufgabe auf dem Bildschirm „Letzte“ behalten möchten, selbst wenn die abgeschlossen haben, übergeben Sie FLAG_ACTIVITY_RETAIN_IN_RECENTS Flag im addFlags()-Methode des zum Starten der Aktivität.

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

Um den gleichen Effekt zu erzielen, Attribut <activity> android:autoRemoveFromRecents an false. Der Standardwert ist true für Dokumentaktivitäten und false für regelmäßiger Aktivitäten. Die Verwendung dieses Attributs überschreibt die Flag FLAG_ACTIVITY_RETAIN_IN_RECENTS.

Freigabe der zuletzt verwendeten URL aktivieren (nur Pixel)

Auf Pixel-Geräten mit Android 12 oder höher können Nutzer Links teilen. zu kürzlich angesehenen Webinhalten direkt über den Bildschirm "Letzte". Nach dem Besuch App-Inhalte angezeigt wird, können Nutzer zum Bildschirm „Letzte Apps“ wischen, um die App zu finden. wo sie sich die Inhalte angesehen haben, und tippen Sie dann auf die Link-Schaltfläche, um die Inhalte URL

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
Der Bildschirm „Letzte“ mit einem Link zum Teilen kürzlich angesehenen Webinhalten

Jede App kann die Verknüpfung von „Letzte Apps“ für Nutzer aktivieren, indem sie eine Weboberfläche und wird überschrieben onProvideAssistContent(), Dies wird im folgenden Beispiel gezeigt:

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