- Forum-Beiträge: 434
08.11.2014, 09:18:24 via Website
08.11.2014 09:18:24 via Website
Hallo,
die Frage warum Variablen und Methoden mit dem Bezeichner "static" (besser: "public static") in Android vermieden werden sollen, beschäftigt mich nun schon eine ganze Weile. Also habe ich einige Beiträge auf Stackoverflow und in anderen Foren gelesen und auch einen Blick in die Doku geworfen.
Wenn man Stackoverflow Glauben schenkt, bekommt man fast das Gefühl ein Programm ginge mit jeder statischen Methoden/Variable ein Stück kaputt und wird letztlich dem Nutzer nichts weiter als Memoryleaks bescheren und Nullpointer hervorrufen. (aus eigener Erfahrung kann ich das nicht bestätigen*, hmm...)
Rein von der "Sinnhaftigkeit" empfinde ich es als absolut logisch, dass manche Instanzen nur einmal vorhanden sind - dementsprechend ist es für mich schwer nachvollziehbar warum "static das Konzept der OOP kaputt macht". Oder habe ich hier etwas Grundlegendes nicht verstanden?
Die Doku sagt
A public static field/method
An alternate way to make data accessible across Activities/Services is
to use public static fields and/or methods. You can access these
static fields from any other class in your application. To share an
object, the activity which creates your object sets a static field to
point to this object and any other activity that wants to use this
object just accesses this static field.
(hier gefunden)
Was ist eure Meinung und (wohl fast wichtiger) was sind eure Erfahrungen?
Fragen die mich vordergründig beschäftigen:
- wie groß sind Performance-Einbußen?
- wird Speicher verschwendet?
- entstehen wirklich Speicherlücken?
- welche Alternative zu static ist "best practise" (wenn man nach die Verwendung von Singletons auf Stackoverflow recherchiert, bekommen die gleichen Leute, die sich über static aufregen, genauso einen Stirnkranzkatarrh, wenn jemand zu besagten Pattern eine Frage stellt. (Ist es wirklich so viel besser 1000 Broadcast-Receiver in einem Projekt zu erstellen?! Letztlich wird für die Receiver meines Wissens ja auch Speicher bereitgestellt)
- gibt es weitere Nachteile von static?
*Meine Programme sind zwar nicht mit statischen Funktionen übersät, aber hin und wieder greife ich dennoch auf diese "Abkürzung" zurück.
Je ausführlicher die Antwort um so besser, ich habe nämlich das Gefühl, dass ich es niemals verstehen werde, was die Menschen auf Stackoverflow in diesem "Context" propagieren
Besten Dank vorab
Martin
Open Source
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.