Indent-Flags für Activity restart

  • Antworten:8
  • Bentwortet
Andreas Weichert
  • Forum-Beiträge: 287

08.11.2012, 12:00:53 via Website

Eine Activity wird in meiner App mehrmals aufgerufen. Es soll aber nur eine Instanz davon da sein, die soll aber jedesmal neu gestartet werden.
Muß die Activity aber vom App-Context aus starten. Daher brauche ich FLAG_ACTIVITY_NEW_TASK.
Ohne das gibs einen Fehler.

Intent in = new Intent(BaseApp.context, Class);
in.addFlags( Intent.FLAG_ACTIVITY_NEW_TASK);
BaseApp.Instance.startActivity(in);

Im Manifest ist die Activity SingleTop.

Mit dem Code wird beim 2. "start" der Activity (1. noch offen ) sie aber nicht neu erzeugt (nicht mal Restart oder Start).
Ich könnte mir natürlich, mir merken ob die Activity offen ist und dann vorher finisch aufrufen.
Ist aber nicht sauber und sollte auch mit den Flags gehen.

Habe einige Flag-Kombinationen ausprobiert - erhalte aber nicht den gewünschten Effekt.

Kennt jemand die richtige Flag-Kombination?

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

08.11.2012, 12:14:05 via Website

Versuche mal in deiner AndroidManifest.xml

1android:launchMode=["multiple" | "singleTop" |
2 "singleTask" | "singleInstance"]

anzugeben....

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Andreas Weichert
  • Forum-Beiträge: 287

08.11.2012, 12:54:26 via Website

Mac Systems
Versuche mal in deiner AndroidManifest.xml

1android:launchMode=["multiple" | "singleTop" |
2 "singleTask" | "singleInstance"]

anzugeben....

<activity
android:name=".A_OneSignal"
android:label="@string/title_activity_a__one_signal"
android:launchMode=["multiple"|"singleTop"|"singleTask"|"singleInstance"]
>
</activity>


So kann ich das nicht im Manifest eingeben. Gibt parser error.

android:launchMode="multiple|singleTop|singleTask|singleInstance" so auch nicht!

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

08.11.2012, 13:15:10 via Website

Du weißt schon wofür das | steht ?

a ODER b
a | b

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Andreas Weichert
  • Forum-Beiträge: 287

08.11.2012, 13:23:53 via Website

Mac Systems
Du weißt schon wofür das | steht ?

a ODER b
a | b

Ja, doch das "oder" Zeichen kenne ich schon >_>.
Es war nur die Frage ob Dein Code die vollständige Lösung ist (Man kann ja auch in XML solche bit-ors schreiben)
oder ob es heißen soll, das ich es auprobieren soll welcher angegebene Schalter der richtige Schalter ist.

— geändert am 08.11.2012, 13:30:39

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

08.11.2012, 13:28:32 via Website

singleInstance sollte passen.

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Andreas Weichert
  • Forum-Beiträge: 287

08.11.2012, 15:35:40 via Website

Funktioniert alles nicht! Letzte instanz bleibt einfach onTop ohne neu zu starten.
Scheint nicht vorgesehen zu sein eine Activity per Intent zu beenden und neu zu starten.
Also doch quick and dirty...

Antworten
Andreas Weichert
  • Forum-Beiträge: 287

08.11.2012, 16:23:25 via Website

Rafael K.
Warum unbedingt neu starten?
Reicht evtl. auch einfach onNewIntent?

Wow, das ist genau das, was ich gesucht habe - wußte nicht, das es diese Funktion gibt.
Hab getestet - funktioniert perfekt.
Vielen Dank für den Tip.

Antworten