Android, Intents, Activities …

1) Was ist der Unterschied zwischen Intent und Activity:

  • Activity hat eine onCreate() und onDestroy() Methode; ist wie init und finalize
  • innerhalb dieses globalen Lebenszyklus gibt es onStart() und onStop,
  • da drin gibt es noch mal onResume() und onPause(), wenn z.B. die Activity in den Hintergrund geht oder wieder aktiviert / fortgesetzt wird

2) Ein Intent ist eine Art Kommando

  • er hat eine URI und eine AktivitätsId als Parameter
  • AktivitätsId ist sowas wie Insert oder SD_CARD_BAD_REMOVAL
  • man kann sich mit einem BroadcastReceiver für gewisse Intents registrieren; z.B. für BATTERY_LOW
  • Intents: es gibt Broadcast Actions wie HEADSET_PLUGGED_IN und Activity Actions wie INSERT
  • es gibt also Intents, die ich selbst erzeugen kann (z.B. MAIN) und solche, auf die ich reagieren kann (BATTERY_LOW)
  • Aktivität ist mehr Nutzerinteraktion / GUI, Intent ist (kleinere) Operation innerhalb einer Aktivität
  • ein Intent muß immer aus einer Aktivität heraus gestartet werden oder mitihm eine neue Aktivität angelegt
  • Beispiel-Intent: ACTION_DIAL tel:123 — Display the phone dialer with the given number filled in.
  • Activity wäre z.B. Telefonbuch; und Dial eine Operation darin
  • (etwas verwirrend) ein Intent hat eine „action“ und einen „data“ Parameter

3) zusätzlich weitere Parameter wie z.B. Kategorie:

  • ACTION_MAIN with category CATEGORY_HOME — Launch the home screen.
  • oder Intent Kategorie LAUNCHER: das ist weniger eine Operation, als eine Art „Absicht“ (was auch eine Übersetzung von Intent ist)
  • weitere mögliche Kategorien sind
  • „CATEGORY_ALTERNATIVE means it should be included in a list of alternative actions the user can perform on a piece of data.“
  • oder CATEGORY_MONKEY – soll bei automatisierte Tests ausgeführt werden
  • oder CATEGORY_CAR_MODE – can be used in a car environment.
  • also zusammengefasst:
  • ACTION – eine Operation wie WEB_SEARCH oder VIEW (Activity Actions) oder HEADSET_UNPLUG oder TIMEZONE_CHANGED (Broadcast Action, nicht von der Aktivität erzeugt, sondern von ihr empfangen)
  • CATEGORY – in welchem Kontext soll der Intent mit der Aktion ablaufen; MAIN, LAUNCHER, CAR
  • Activity – die (größere) „Anwendung drumherum“; eher am kompletten Anwendungsfall / USecase für eine Nutzerinteraktion / Nutzeranwendung; z.B. Telefonbuch

4) EXTRA, FILL_IN, FLAG_ACTIVITY

  • dann gibt es noch EXTRA – das sind weitere extra Infos für den Intent; z.B. PackageList oder BCC oder TITLE
  • und FILL_IN – CATEGORIES, DATA, PACKAGE
  • und FLAG_ACTIVITY – CLEAR_TASK oder FORWARD_RESULT

3) Was ist ein IntentFilter?

  • filter on: the action, data, and categories
  • kein Filter auf extras oder flags
  • üblicherweise in der manifest.xml, weniger direkt im Code
  • allgemein: es gibt acivities, services und broadcast receiver
  • intents sind „messages“; late run-time binding
  • gute Übersicht
  • (aha) Intent Filter beschreiben, auf welche Arten von Intents eine Aktivität reagiert; wenn keinerlei Filter definiert sind, kann sie nur auf explizite Intents reagieren; z.B. durch startActivity
    • z.B. Category Launcher fehlt -> keine Anzeige im Startmenü
    • Action Main fehlt -> es wird keine start Methode ausgeführt; beim Ausrollen im Emulator kommt diese Infomeldung:
      [2011-05-13 12:59:00 - TestRelativeLayout] No Launcher activity found!
      [2011-05-13 12:59:00 - TestRelativeLayout] The launch will only sync the application package on the device!
    • es müssen beide da sein: category launcher und action main; wenn eine von beiden fehlt kommt beide male die gleiche oben aufgeführte Fehlermeldung beim Ausrollen auf den Emulator
  • IntentFilter haben keinen Einfluß auf explizite Intents (!)

Advertisements
Dieser Beitrag wurde unter Uncategorized veröffentlicht. Setze ein Lesezeichen auf den Permalink.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s