Möglichkeiten, eine Android App im Hintergrund in den Vordergrund zu bringen

8

Hier ist das Szenario:

AndroidManifest.xml definiert eine einzelne Aktivität mit android:launchMode="singleTask" . (Dies bedeutet, dass während des gesamten Anwendungslebenszyklus eine einzelne Aktivität im Stapel vorhanden sein sollte, richtig?)

Während Activity.onCreate() wird ein Broadcast-Empfänger programmgesteuert erstellt und wartet auf eingehende SMS. Der Empfänger bleibt auch nach Activity.onPause() by design aktiv.

Wenn der Benutzer mit der Anwendung fertig ist, drückt er die Home-Taste des Geräts, die Activity.onPause() aufruft und die Anwendung verschwindet. Das Gerät zeigt dann den Android-Startbildschirm an.

Nach Empfang der SMS erhalten die Broadcast-Empfänger SMS und versuchen, die Aktivität über:

anzuzeigen %Vor%

Die Aktivität wird dem Benutzer jedoch NICHT angezeigt.

  • a) Warum?
  • b) Welche Möglichkeiten gibt es, eine Activity in den Vordergrund zu bringen?
David Andreoletti 11.10.2012, 11:13
quelle

2 Antworten

17

In MyMainActivity definition (AndroidManifest.xml):

%Vor%

Programmatisch die Anwendung in den Vordergrund bringen:

%Vor%

Hinweis: context.startActivity(it) würde NICHT funktionieren, wenn das Objekt context dasselbe ist wie die Aktivität, die man aufrufen möchte.

    
David Andreoletti 15.10.2012, 09:21
quelle
1

Ja, was Sie sagen, ist richtig, haben Sie einen BroadcastReceiver und feuern Sie eine Absicht auf Ihre Aktivität ab, um sie in den Vordergrund zu bringen. Vorsicht, jedoch bezüglich des Aktivitätslebenszyklus.

Android OS kann Ihre Aktivität von onPause () zu onStop () und onDestroy () abhängig von Systemressourcen führen. In diesem Fall wird Ihre aufrufende Aktivität erneut neu gestartet. Treffen Sie daher Vorkehrungen. Sonst ist es sehr einfach, auf NullPointerExceptions zuzugreifen

    
Royston Pinto 11.10.2012 13:46
quelle

Tags und Links