Frage

Ich habe den Android-Entwicklerleitfaden und einige Artikel im Internet gelesen und bin immer noch verwirrt singleTask launchmode.Nehmen wir ein Beispiel:

Der Benutzer startet die App1, Android startet eine neue Aufgabe.Angenommen, App1 erstellt Aktivitäten in der folgenden Reihenfolge:

ActivityA -> ActivityB -> ActivityC

So sieht Aufgabe 1 aus.

Dann klickt der Benutzer auf die Home-Schaltfläche und wählt App2 aus, damit Aufgabe 1 im Hintergrund läuft und Android eine neue Aufgabe startet:task2, Benutzer macht etwas:

ActivityD -> ActivityE

Sagen wir mal ActivityE versuche zu beginnen ActivityB , Und ActivityB hat den Startmodus singleTask.

Was ich verstehe ist, dass Task1 wieder ins Frontend kommt und Task2 in den Hintergrund geht.Und Aufgabe1 sieht jetzt so aus:

ActivityA -> ActivityB

Was bedeutet:

  1. Der ActivityC wird aus Aufgabe1 entfernt und AktivitätB wird zur obersten Aktivität.

  2. Wenn der Benutzer nun auf die Schaltfläche „Zurück“ klickt, gelangt er zu ActivityA von Aufgabe1 statt zurück zu ActivityE von Aufgabe2

Habe ich recht?

Danke

War es hilfreich?

Lösung

AktivitätC wird aus Aufgabe1 entfernt und AktivitätB wird zur obersten Aktivität.

Ja, du hast recht...

ActivityC wird z. B. entfernt.Die onDestroy-Methode von ActivityC wird aufgerufen.Wenn der Benutzer also Aufgabe 1 erneut startet, wird ActivityB anstelle von ActivityC angezeigt.

Habe 2 Aufgaben (Projekte) erstellt und dieselben hochgeladen @ SendSpace.Versuch es...

Wenn Sie sich Androiden ansehen Dokumentation es sagt

„Eine „singleTask“-Aktivität ermöglicht es anderen Aktivitäten, Teil ihrer Aufgabe zu sein.Es steht immer an der Wurzel seiner Aufgabe, aber andere Aktivitäten (notwendigerweise „Standard“- und „SingleTop“-Aktivitäten) können in diese Aufgabe eingeleitet werden.“

Das heißt, wenn Sie auf die Home-Schaltfläche klicken, werden alle Aktivitäten über der einzelnen Aufgabenaktivität (in Ihrem Fall AktivitätB) aus dem Stapel entfernt.

Wenn Sie in den Beispiel-Apps, die ich Ihnen zuvor gegeben habe, einfach das Projekt „AndroidTest“ ausführen und in den Protokollen auf die Home-Schaltfläche klicken, können Sie sehen, dass die zweite Aktivität auf „Pause“ gesetzt ist, und wenn Sie sie über „Zuletzt verwendete Apps“ erneut starten. Listen Sie auf, dass die 2. Aktivität zerstört ist.

In einem Szenario, in dem die über den Einzelinstanzaktivitäten (ActivityB) liegenden Aktivitäten nicht aus dem Backstack entfernt werden und eine andere Anwendung diese Aktivität (ActivityB) anfordert, wird sie möglicherweise nicht angezeigt und die Absicht wird möglicherweise verworfen.Die Wahrscheinlichkeit, dass dies geschieht, ist jedoch wesentlich geringer, da der Benutzer zunächst die Home-Taste und dann die aktuelle Aufgabe/App im BackStack drücken muss, bevor er zu einer anderen Aufgabe/App navigieren kann.

Daher die Warnung

Die anderen Modi – singleTask und singleInstance – sind für die meisten Anwendungen nicht geeignet, da sie zu einem Interaktionsmodell führen, das den Benutzern wahrscheinlich unbekannt ist und sich stark von den meisten anderen Anwendungen unterscheidet.

Ich hoffe, dass dies Ihre Zweifel ausräumt.

Andere Tipps

Du klingst richtig.

Testen Sie es doch mal.

Es gibt auch diese App, die helfen kann, den Startmodus zu erklären:

https://play.google.com/store/apps/details?id=com.novoda.demos.activitylaunchmode

enter image description here

Quellen sind unter https://github.com/gnorsilva/Activities-LaunchMode-demo

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top