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