Android Framework lernen / Wie funktioniert Android?

D

deep90sravioli

Gast
Hi,

ich habe vor kurzem angefangen mal in die Android Programmierung reinzuschnuppern und muss sagen das mir das echt gefällt und das richtig spaß macht. Ich bin gerade dabei, das Android Framework zu lernen, habe mir schon einiges angeguckt und habe auch schon ein Projekt gestartet. Allerdings gibt es noch einige kleine Sachen, die mir noch nicht so ganz klar sind. Da Android der erste Bereich ist, indem ich auch GUI code und nicht nur auf low-level oder CLI, wollte ich noch zwei Fragen klären:

  • Die mainActivity ist ja quasi der init einer App, also ähnlich wie eine main Funktion in C/C++. Zählt diese dann als komplette init der App oder nur für das MainFragment?
  • Jedes Fragment wird ja irgendwie durch eine gleichnamige Activitiy betrieben, aber wie genau werden Notifications betrieben? Die haben ja außer Einstellungsmöglichkeiten nicht wirklich ein Fragmet, müssten die dann "immer" in der mainActivitiy stehen oder kann man das auch irgendwie auslagern?

Könnte mir da jemand eventuell Dokumentationen mitverlinken für das was ich noch nich gefunden oder vielleicht übersehen habe? Wäre mega!


Mit freundlichen Grüßen

Edit: Vergessen -> Ich schreibe in Kotlin

Ravioli
 
Zuletzt bearbeitet von einem Moderator:
Hey Ravioli, erst einmal willkommen in diesem spannenden Bereich! :)

Nun zu deinen Fragen: Die MainActivity ist nicht direkt der Init der App, sondern lediglich eine Art Preset, um Entwicklern den Einstieg in die Entwicklung einer neuen App etwas zu erleichtern.

Der eigentliche Init ist die sogenannte AndroidManifest.xml. Dort werden Berechtigungen, das App-Icon, der App-Name (beides für den Drawer), das Standard-Theme und aber auch die Activities und Services verlinkt, so auch die standardmäßig erstellte MainActivity. Ohne eine entsprechende Verlinkung dort ist die jeweilige Activity nicht funktionsfähig, und ohne die dort definierten Berechtigungen kannst du auch auf die entsprechenden Features nicht zugreifen.

Alternativ kannst du auch eine Application-Klasse (mit beliebigen Namen) erstellen (also eine Klasse, die die "Application"-Klasse des Android-Frameworks erweitert) und dort "verlinken", diese dient dann als zentrale (globale) Anlaufstelle für zum Beispiel Variablen oder irgendeinen anderen Code, den du an mehreren Stellen in der App brauchst oder brauchen könntest. Diese Klasse würde dann beim Start der App aufgerufen werden (also als erstes), und zugleich auch als letztes beendet werden, also nach allen Activities. Somit ist diese also eine sehr praktische Hilfe, wenn man etwas tiefer in der Entwicklung steckt.

Beispiel:
Angenommen, du hast die MainActivity und eine SettingsActivity, und beiden sollen aber irgendwie miteinander kommunizieren können oder auf etwas zugreifen, das erst einmal von der App initialisiert werden soll. Für diesen Fall kannst du die zu initialisierenden Objekte einfach in die Application-Klasse packen und dort initialisieren, damit du von beiden Activities darauf zugreifen kannst und sie nicht immer wieder neu initialisieren oder erstellen musst.

Aber das geht schon alles ziemlich ins Detail und ist auch abhängig vom Programmierstil. Für Zahlenwerte oder Strings bieten sich beispielswiese eher die xml-Dateien im res-Ordner an.

Google bietet generell eine ziemlich gute Dokumentation. Ich würde dir empfehlen, da mal etwas hineinzuschauen und ggf. auch ein paar (relativ neue) YouTube-Tutorials anzuschauen. Das hat mir damals sehr geholfen und zugleich sehr viel Spaß gemacht!

Auf die zweite Frage bezüglich der Notifikationen gehe ich erstmal nicht ein, da ich damit selbst noch nicht gearbeitet habe. Hier ist es vermutlich am zielführendsten, wirklich erstmal in die Dokumentation (Create a Notification) zu schauen.

Viele Grüße und viel Spaß! ;)
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: deep90sravioli und IBISXI
SaschaHa schrieb:
Hey Ravioli, erst einmal willkommen in diesem spannenden Bereich! :)

Nun zu deinen Fragen: Die MainActivity ist nicht direkt der Init der App, sondern lediglich eine Art Preset, um Entwicklern den Einstieg in die Entwicklung einer neuen App etwas zu erleichtern.

Der eigentliche Init ist die sogenannte AndroidManifest.xml. Dort werden Berechtigungen, das App-Icon, der App-Name (beides für den Drawer), das Standard-Theme und aber auch die Activities und Services verlinkt, so auch die standardmäßig erstellte MainActivity. Ohne eine entsprechende Verlinkung dort ist die jeweilige Activity nicht funktionsfähig, und ohne die dort definierten Berechtigungen kannst du auch auf die entsprechenden Features nicht zugreifen.

Alternativ kannst du auch eine Application-Klasse (mit beliebigen Namen) erstellen (also eine Klasse, die die "Application"-Klasse des Android-Frameworks erweitert) und dort "verlinken", diese dient dann als zentrale (globale) Anlaufstelle für zum Beispiel Variablen oder irgendeinen anderen Code, den du an mehreren Stellen in der App brauchst oder brauchen könntest. Diese Klasse würde dann beim Start der App aufgerufen werden (also als erstes), und zugleich auch als letztes beendet werden, also nach allen Activities. Somit ist diese also eine sehr praktische Hilfe, wenn man etwas tiefer in der Entwicklung steckt.

Beispiel:
Angenommen, du hast die MainActivity und eine SettingsActivity, und beiden sollen aber irgendwie miteinander kommunizieren können oder auf etwas zugreifen, das erst einmal von der App initialisiert werden soll. Für diesen Fall kannst du die zu initialisierenden Objekte einfach in die Application-Klasse packen und dort initialisieren, damit du von beiden Activities darauf zugreifen kannst und sie nicht immer wieder neu initialisieren oder erstellen musst.

Aber das geht schon alles ziemlich ins Detail und ist auch abhängig vom Programmierstil. Für Zahlenwerte oder Strings bieten sich beispielswiese eher die xml-Dateien im res-Ordner an.

Google bietet generell eine ziemlich gute Dokumentation. Ich würde dir empfehlen, da mal etwas hineinzuschauen und ggf. auch ein paar (relativ neue) YouTube-Tutorials anzuschauen. Das hat mir damals sehr geholfen und zugleich sehr viel Spaß gemacht!

Auf die zweite Frage bezüglich der Notifikationen gehe ich erstmal nicht ein, da ich damit selbst noch nicht gearbeitet habe. Hier ist es vermutlich am zielführendsten, wirklich erstmal in die Dokumentation (Create a Notification) zu schauen.

Viele Grüße und viel Spaß! ;)

Wow, danke für die Antwort! Da ich wie erwähnt bisher nur auf low-level und Hardwareebene programmiert hab fehlt mir einfach noch ziemlich viel Grundverständnis im Bezug auf GUI und den Aufbau, da hab ich mich gestern Abend nochmal Mords durchgelesen aber es fehlt manchmal leider an einem simplen "Hier so und nicht anders". :D Die AndroidManifest.xml werde ich mir heute auch nochmal ordentlich angucken, App-Icons etc müssen ja auch noch verändert werden. Die Klassen Application & Activity würde ich mir jetzt auch gerne nochmal angucken, das konzept von OO und erben kenne ich, aber ich weiß hier leider noch nicht was diese Klassen alles mit sich bringen.

Zu den Notifications: Wäre es denn möglich eine Klasse für Notifications zu machen und dort eine Methode als 'Builder' zu definieren, sodass wenn ich in einem Fragment ein Objekt erstelle dieses schon grundlegene Attribute und Methoden besitzt? Alternativ würde ich den builder tatsächlich in den Konstruktor packen, aber da weiß ich nicht was möglich ist und was nicht. :D

Aber dennoch vielen dank für die Hilfe!
 
Zurück
Oben