Android-Aktivität in neuer Aufgabe ohne Android öffnen: launchMode="singleTask"

9

Ich habe eine Browser-Anwendung mit Hauptaktivität erstellt, die auf folgende Absichten reagiert:

%Vor%

Bei URL-Klick von einer anderen Aufgabe (Gmail, SMS) Wenn ich meine Anwendung wähle, ist die Aktivität in derselben Task wie die aufrufende Aufgabe geöffnet. Wenn ich einen anderen Browser auswähle (Mozilla Firefox, Chrome, Delphine) öffnen sie sich in verschiedenen Aufgaben.

Wenn ich auf andere Browser-Manifeste schaue, sehe ich, dass niemand android: launchMode="singleTask" .

verwendet

Ich möchte nicht Single-Task-Flag verwenden, da es nicht von Google empfohlen wird und macht mir auch andere Proleme.

Ich habe versucht zu verstehen, wie andere Browser es tun, aber es nicht herausgefunden haben.

irgendwelche Ideen? Gibt es eine andere Möglichkeit, meine Aktivität in verschiedenen Aufgaben zu öffnen, ohne SingleTask Flag zu verwenden?

    
user3398598 26.05.2014, 07:37
quelle

3 Antworten

1

Sie versuchen, die Regeln ein wenig zu ändern, und Sie sind nicht klar genug, was Sie vermeiden möchten, indem Sie android:launchMode="singleTask" nicht verwenden.

Also würde ich vorschlagen, entweder zu erforschen:

  1. Erzeuge ein Service und lasse dieses Service auf den Intent-Filter hören. Wenn Sie Service haben, dann öffnen Sie Ihre Activity und stellen Sie sicher, dass die Activity -Affinität korrekt auf die Service abgestimmt ist. Auf diese Weise können Sie das Problem beheben, bei dem die Affinität Activity nicht korrekt bindet.

  2. Mit einer stillen Activity beginnt eine neue Activity und wird beendet. Die stille Activity würde in einem neuen Stapel (nicht in einem Singletask-Modus) starten und würde sich beim Start von Activity , das Sie tatsächlich benötigen, selbst schließen.

Vaiden 28.05.2014, 10:08
quelle
2

Sie können onCreate einchecken, wenn die Aktivität in einer einzelnen Task ausgeführt wird. Wenn Sie es nicht nur fertigstellen (), und erstellen Sie es erneut mit FLAG_ACTIVITY_NEW_TASK

Dies kann Ihnen helfen

%Vor%     
Emanuel S 26.05.2014 09:06
quelle
1

Ich habe die folgende Beschreibung auf der Android-Seite gefunden:

  

Als ein weiteres Beispiel erklärt die Android Browser-Anwendung, dass der   Web-Browser-Aktivität sollte immer in einer eigenen Aufgabe öffnen - durch Angabe   der SingleTask-Startmodus im Element. Das bedeutet, dass   Wenn Ihre Anwendung eine Absicht zum Öffnen des Android Browsers ausgibt, wird   Aktivität ist nicht in derselben Task wie Ihre Anwendung platziert. Stattdessen,   entweder startet eine neue Aufgabe für den Browser oder, wenn der Browser bereits existiert   Im Hintergrund läuft eine Aufgabe, an die die Aufgabe weitergeleitet wird   Behandle die neue Absicht.

Wie Sie sehen können, ist android:launchMode=singleTask in Ihrem Fall die richtige Wahl. Sie haben bereits erwähnt, dass Sie Probleme mit dieser Eigenschaft hatten, also konzentrieren wir uns vielleicht auf sie.

Update 28.05.2014

Hinweis von Google bezüglich singleTask launchMode:

  

Die anderen Modi - singleTask und singleInstance - sind nicht geeignet   für die meisten Anwendungen, da sie zu einem Interaktionsmodell führen, das   ist den Nutzern wahrscheinlich nicht vertraut und unterscheidet sich sehr von den meisten   andere Anwendungen.

singleTask und singleInstance Anwendungsfall von Google:

  

Spezialisierte Starts (nicht für den allgemeinen Gebrauch empfohlen)

Wie Sie sehen können, ist singleTask möglicherweise nicht für den allgemeinen Gebrauch zu empfehlen, aber Ihr Fall ist nicht allgemein, tatsächlich ist es einer der Fälle, in denen singleTask perfekt passt. Mit anderen Worten, singleTask ist nicht verboten, es muss nur mit Vorsicht verwendet werden, um den Endbenutzern eine allgemeine Erfahrung mit Ihrer App zu bieten.

Ich hoffe, ich habe es jetzt für Sie klar gemacht. Fühlen Sie sich in diesem Fall mit diesem Startmodus wohl.

    
Damian Petla 26.05.2014 09:12
quelle

Tags und Links