public class MyApplication extends Application

  • Sehr interessante Frage - musste ich gleich mal die Doku wälzen und bin auf zwei Punkte gestoßen, die dir vielleicht weiterhelfen:


    Application ist auch eine der vielen Context-Klassen, aber mit sehr wenig Eigenschaften, außer dass sie gerade mal eine Application ist, die von ein paar Sachen erbt, die von außen interessant sind. Und die Doku sagt dazu:


    Zitat

    There is normally no need to subclass Application. In most situation, static singletons can provide the same functionality in a more modular way. If your singleton needs a global context (for example to register broadcast receivers), the function to retrieve it can be given a Context which internally uses Context.getApplicationContext() when first constructing the singleton.


    Der zweite Punkt ist aber der spannende: es gibt eine Klasse die von Application ableitet, und zwar die MockApplication. Und die ist für Testzwecke sehr sinnvoll, weil sie eine andere App simulieren kann. Damit kann deine App dann gucken, ob die MockApplication da ist und ein paar Sachen von ihr abfragen. Die MockApplication hat nämlich einiges geerbt, aber schmeißt für alles Fehlermeldungen, außer du hast die Methoden selber implementiert. Die Doku zu Testing Fundamentals gibt leider nur sehr knappe Hinweise zu dem Thema.


    Benutzt hab ich das zwar noch nicht, aber mir kommen da gerade mal ein paar Ideen, weil ich in einigen meiner Apps auch mal Mails verschicke oder Telefonnummern per Intent verschicke - aber beim Testen will ich ja gar nicht telefonieren...

  • Zitat


    Hallo zusammen,
    wann macht es Sinn eine Klasse zu nutzen, die von Application ableitet und wie wird diese in die App eingebunden.


    Danke für eure Meinungen


    Gruss KHH



    Da gibt es auf Stackoverflow ganz interessante Diskussionen zum Thema


    http://stackoverflow.com/quest…-application-as-singleton
    http://stackoverflow.com/quest…plication-not-a-good-idea


    bzw. hier auch einen Beitrag


    http://www.devahead.com/blog/2…d-dealing-with-singleton/
    http://androidcookbook.com/Recipe.seam?recipeId=1218


    -> Da die ApplicationKlasse immer als Grundgerüst deiner App läuft, kannst du Sie als gloablen Singelton verwenden und ein paar Daten speichern. (oder in MyApplication eine Klasse stellen, welche die ganzen Daten vorhält)


    Der Vorteil, dieses Daten sind App weit verfügbar und kleben nicht an einer Activity. Über den ApplicationContext kommst du immer an die Instanz deiner Application und kannst darauf zugreifen.
    Das Problem : aus PHP und CO. wissen wir ja bereits globale Variabeln sind böse , aber das ist Ansichtssache.


    Anderes Beispiel: bei AndroidPit im Forum nutzt einer die Klasse um global den StrictMode zu deaktivieren (ist auch zu hinterfragen ob das gut ist, aber seine Argumente sind nachvollziehbar) aber lest selbst:


    http://www.androidpit.de/de/an…efungen-des-OS-abschalten



    Also ich hatte das selbe Problem -> Daten aus dem Internet geladen , sollten verfügbar für 3 verschiedene Activities sein. Und da ich die Daten nicht jedes Mal neu laden wollte habe ich Sie mir die Struktur in MyApplication gebaut (getter und Setter methoden geschrieben) und alles funktioniert wie gewünscht.

  • Ich selbst nutze sie nur, um das Setup für ACRA durchzuführen.
    Alle anderen Dinge wie Datenspeicherung würde ich tatsächlich eher woanders durchführen, denn wenn die App crasht ist alles weg.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Sehr gern.
    Sieh an, der Google SpreadSheet Support ist nicht mehr gegeben?
    Ich glaube, ich probiere mal die acralyzer Lösung aus. ^^

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!