launchMode=”singleTask” instellen versus activiteit launchMode=”singleTop”

Ik heb een app die erg hiërarchisch is (activiteiten zijn vergelijkbaar met League > Team > Position > Player) en daarom heb ik elke activiteit singleTopgemaakt om de navigatie overzichtelijk en om dubbele exemplaren te voorkomen.

Nu ben ik mijn tweede app aan het maken en ik heb gezien dat er werd voorgesteld om mijn toepassing als singleTaskte declareren om dubbele instanties te voorkomen. Kan iemand de voordelen van elke benadering uitleggen?

Mijn nieuwe app is slechts een activiteit met 3 fragmenten en dan zal ik waarschijnlijk een instellingenactiviteit en misschien een FAQ toevoegen.

EDIT: ik realiseerde me net dat singleTaskGEEN dubbele instanties van mijn app voorkomt, zoals ik had gedacht. Nu op zoek naar de juiste manier om dit aan te pakken…


Antwoord 1, autoriteit 100%

Ik denk dat je definitie van singleTop en singleTask een beetje verkeerd is. SingleTop kan een dubbele instantie produceren. Laten we uw voorbeeld gebruiken, League > Ploeg > Positie > Speler. Als er een knop in het spelersscherm is die u naar het competitiescherm brengt, wordt dit League > Ploeg > Positie > Speler > Liga.

Terwijl singleTask garandeert dat er slechts één instantie van de activiteit kan bestaan.


Antwoord 2, autoriteit 42%

Android-activiteit startmodus

4 modi…

  1. “standaard”
  2. “singleTop”
  3. “singleTask”
  4. “singleInstance”

De standaardmodus is “standaard”.

De modi vallen in twee groepen. standarden singleTopkomen aan de ene kant en singleTasken singleInstancekomen aan de andere kant.

Het belangrijkste verschil tussen standaard en singleTopis dat standaard elke keer dat er een nieuwe intentie voor standaardactiviteit is, een nieuwe instantie wordt gemaakt. In het geval van singleTopwordt er ook een nieuwe instantie gemaakt, maar een instantie van de activiteit staat al bovenaan de stapel, er wordt geen nieuwe instantie gemaakt.

Eigenlijk komt het probleem wanneer we een applicatie van een server downloaden en starten en vanaf daar zelf openen. Druk na het starten van de applicatie op de home-knop. Klik vervolgens op alle programma’s en selecteer het pictogram van de applicatie in het startscherm. Dan wordt er bij standard nog een activiteit aangemaakt, maar in singleTop wordt er geen nieuwe instance aangemaakt.

De modi “singleTask” en “singleInstance” verschillen ook in slechts één opzicht van elkaar:

Een “singleTask“-activiteit zorgt ervoor dat andere activiteiten deel kunnen uitmaken van zijn taak. Het bevindt zich aan de basis van de activiteitenstapel, maar andere activiteiten (noodzakelijkerwijs “standaard” en “singleTop”-activiteiten) kunnen in dezelfde taak worden gestart.

Een “singleInstance“-activiteit daarentegen staat geen andere activiteiten toe om deel uit te maken van zijn taak. Het is de enige activiteit in de taak. Als het een andere activiteit start, wordt die activiteit toegewezen aan een andere taak — alsof FLAG_ACTIVITY_NEW_TASK de bedoeling was.

http://smartandroidians.blogspot.in /2010/04/activity-launch-mode-in-android.html


Antwoord 3, autoriteit 18%

Ik heb het antwoord hier gevonden:
http://www.intridea.com/blog/2011/6/16/ android-understanding-activity-launchmode

“singleTop”:

Het verschil met ‘standaard’ is dat als er al een instantie van activiteit bovenaan de huidige taak bestaat en het systeem de intentie naar deze activiteit stuurt, er geen nieuwe instantie wordt gemaakt omdat deze in plaats daarvan een onNewIntent()-methode activeert van het maken van een nieuw object. Laten we als voorbeeld de Twitter-oauth-integratie nemen.

“singleTask”:

Er wordt altijd een nieuwe taak gemaakt en een nieuwe instantie wordt als root naar de taak gepusht. Als er echter een activiteitsinstantie in een taak bestaat, stuurt het systeem de intentie naar die activiteitsinstantie via de methodeaanroep onNewIntent(). In deze modus kunnen activiteitsinstanties naar dezelfde taak worden gepusht. En als de gebruiker op de TERUG-toets van de singleTask-activiteit klikt, keert het systeem de gebruiker terug naar de vorige activiteit.


Antwoord 4, autoriteit 11%

Van Inzicht in de startmodus van Activiteit:

standaard (standaard):- Meerdere instanties van de activiteitsklasse kunnen zijn
geïnstantieerd en meerdere instanties kunnen aan dezelfde taak worden toegevoegd of
verschillende taken. Dit is de gebruikelijke modus voor de meeste activiteiten.

singleTop :- Het verschil met standaard is, als een instantie van de
activiteit bestaat al bovenaan de huidige taak en het systeem
leidt de intentie naar deze activiteit, er wordt geen nieuwe instantie gemaakt
omdat het een onNewIntent()-methode activeert in plaats van a . te maken
nieuw object.

singleTask:- Er wordt altijd een nieuwe taak gemaakt en een nieuwe instantie
naar de taak worden geduwd als de root. Als er echter een activiteitsinstantie is
bestaat in alle taken, stuurt het systeem de intentie naar die activiteit
instantie via de methode-aanroep onNewIntent(). In deze modus, activiteit
instanties kunnen naar dezelfde taak worden gepusht. Deze modus is handig voor:
activiteiten die fungeren als toegangspunten.

singleInstance:- Hetzelfde als singleTask, behalve dat geen activiteiten
instantie kan in dezelfde taak worden geduwd als die van de singleInstance.
Dienovereenkomstig is de activiteit met de startmodus altijd in één
activiteit instantie taak. Dit is een zeer gespecialiseerde modus en zou
alleen worden gebruikt in applicaties die volledig als één zijn geïmplementeerd
activiteit.

Other episodes