2009-09-08 6 views
7

Ich weiß, dass das Activity-Modell von Android etwas anders ist als das, was ich normalerweise als "App" betrachte.(Android) Wie man etwas auf App "Start" zu tun?

Ich möchte etwas tun (in diesem Fall, überprüfen Sie einige Benachrichtigungen auf einem Server und zeigen sie, wenn verfügbar), wenn meine App "gestartet" ist. Was ist ein guter Weg, dies zu erreichen?

Ich möchte es wahrscheinlich nicht im OnCreate einer Aktivität tun, da jede Aktivität beliebig oft erstellt werden kann - der Code würde häufiger aufgerufen als nötig.

Die App hat auch mehrere Einstiegspunkte - müsste ich den Check in jeder Aktivität duplizieren?

Was ich vorhabe ist, diesen Code innerhalb des Application-Objekts einzurichten, zusammen mit einem Flag, das verfolgt, ob es bereits aufgerufen wurde - und es einfach von jedem Activity onCreate() aufrufen.

Gibt es einen besseren oder mehr "richtigen" Weg, dies zu tun?

Antwort

9

Die Recht, Android-zugelassene Weise dies zu tun ist:

  • Erstellen Sie Ihre eigenen android.app.Application Klasse
  • Aufschalten der onCreate Methode
  • Im AndroidManifest.xml, ändern Sie die android:name Attribut des application Element zum Namen Ihrer Klasse
  • Jetzt, wenn Ihre App "gestartet" ist (eine Ihrer Aktivitäten wird für die f gestartet Zum ersten Mal und keine anderen Instanzen sind am Leben onCreate wird aufgerufen.

Sie können auch die onTerminate Methode nützlich finden.

+0

Danke - das ist wahrscheinlich, was ich brauche, ich werde es versuchen. –

+0

Whoa ... Ich habe nie realisiert, dass du das kannst. Macht jetzt Sinn, obwohl ich weiß, obwohl ... –

0

Können Sie einfach überprüfen, ob das an onCreate() übergebene Paket null ist?

Es ist nicht null „Wenn die Aktivität neu initialisiert wird, nachdem zuvor heruntergefahren werden ...“

0

Es gibt vermutlich keinen Schaden es in onCreate bei der Umsetzung; Die Aktivität wird wirklich nur zerstört, wenn das Betriebssystem den RAM für etwas anderes benötigt, nicht wenn der Benutzer zu einer anderen App geht.

EDIT: Sie können auch eine Service that runs when the device gets booted up haben, auch. Dies ist möglicherweise eine bessere Option, wenn Sie auch überprüfen möchten, wann die App gestartet wird, da Sie nur context.startService von der Aktivität aufrufen müssen, um die Prüfung auszuführen. Seien Sie sicher, es zu stoppen, wenn es fertig ist, wenn Sie es nicht brauchen, um hartnäckig zu sein.

+1

Nun, es gibt einige Fälle, in denen onDestroy() als Reaktion auf etwas unschuldige Aktionen aufgerufen wird - wie das Drücken der BACK-Taste oder das Ändern der Ausrichtung des Geräts (sofern nicht explizit anders angegeben). Und nur im letzteren Fall ist der an onCreate() übergebene Parameter Bundle NICHT NULL. –

Verwandte Themen