IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Classe statique (Activity) et onCreate


Sujet :

Android

  1. #1
    Membre averti Avatar de Nicopilami
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 339
    Points
    339
    Par défaut Classe statique (Activity) et onCreate
    Bonjour à tous

    Comme l'indiquent les "best practices", j'utilise une Activity (que j'ai nommée "CommonFunctions") et que j'ai déclarée dans le Manifest en tant que classe statique, afin d'éviter les duplications de code.

    Je trouverai dedant par exemple une fonction pour la création de notifications, une pour les alarmes, ...

    Ainsi, j'appelle mes fonctions en faisant un ((CommonFunctions)getApplicationContext).mafonction(mesparametres) depuis le onStart de mon activity courante

    Le hic, c'est que j'ai l'impression que suite à l'appel d'une telle fonction, je repasse dans le oncreate de mon "activity appelante", et du coup, je me retrouve dans une boucle infinie : OnStart activity1 -> appel fonction CommonFunctions -> OnCreate activity1 -> OnStart activity1 -> appel fonction CommonFunctions ...

    -> Est-ce que c'est bien cela qui cause ce comportement ? (ou un bug dans mes fonctions)
    -> Si oui, comment éviter cela ?

    Merci
    si ton travail est difficile et tes résultats sont minces
    n’oublie pas qu’un jour, le grand chêne a été un gland comme toi.

  2. #2
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    est ce que tu pourrais nous montrer un bout de code ?

    Merci.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Ca me parrait étrange de créer un activity pour en faire un "sac" à fonctions communes.

    Que tu créer une classe static simple avec des fonctions dedans ok , mais une activity, je suis pas convaincu ...
    T'as un lien vers cette recommandation ?
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Citation Envoyé par Nicopilami Voir le message
    Comme l'indiquent les "best practices", j'utilise une Activity (que j'ai nommée "CommonFunctions") et que j'ai déclarée dans le Manifest en tant que classe statique, afin d'éviter les duplications de code.
    Les "best practices" de qui ? parce que là je suis sceptique...
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  5. #5
    Membre averti Avatar de Nicopilami
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 339
    Points
    339
    Par défaut
    mea culpa, je parlais d'Application, pas d'Activity...

    Nico
    si ton travail est difficile et tes résultats sont minces
    n’oublie pas qu’un jour, le grand chêne a été un gland comme toi.

  6. #6
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Du coup c'est quoi le rapport avec ta première question.

    Si on parle bien d'Application je ne vois plus le rapport avec ta première demande .
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  7. #7
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Application est plus fait pour contenir des données globales à l'application.
    Si tu as des méthodes static de type utilitaires (des helpers en gros) préfère une classe static dédiée.

    L'idée étant de garder Application la plus légère possible puisqu'elle est chargée partout.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Ouais, enfin, les helpers aussi sont chargés en général partout
    Mais je ne suis pas sur que gagner quelques Ko d'une classe soit d'un interêt capital.

    Il faut surtout raisonner en terme de fonctionnalités, et ou ces fonctionnalités sont nécessaires.

    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public <T> T  getView(Activity base, int id, Class<T> cl)
    {
        View v = base.getViewById(id);
        if (v == null) throw new IllegalArguementException(Integer.toHexString(id)+" view doesn't exist");
        if (!cl.isAssignableFrom(v))
           throw new IllegalArguementException(Integer.toHexString(id)+" view is not a "+cl.getSimpleName()+" ("+v.getClass().getSimpleName()+")");
        return (T) v;
    }
    Fonction super pratique à bien des endroit devrait être statique dans une classe "ViewUtils".

    Les classes utilitaires n'ayant que des fonctions statiques peuvent être rendues non instanciables avec un constructeur (vide) privé.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  9. #9
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Citation Envoyé par nicroman Voir le message
    Les classes utilitaires n'ayant que des fonctions statiques peuvent être rendues non instanciables avec un constructeur (vide) privé.
    Ou une classe abstraite tout simplement.
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  10. #10
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Hephaistos007 Voir le message
    Ou une classe abstraite tout simplement.
    Pas tout à fait... une classe "faussement" abstraite peut être instanciée (vive les classes anonymes):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MaClassAbstraite instance = new MaClassAbstraite{ }();
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

Discussions similaires

  1. Pb difficile a expliquer, classe statique
    Par seb.49 dans le forum Services Web
    Réponses: 1
    Dernier message: 29/03/2007, 15h22
  2. Tableau de constantes dans une classe statique
    Par Nico_stras dans le forum C#
    Réponses: 4
    Dernier message: 05/03/2007, 20h18
  3. Classe statique en C++ ?
    Par oodini dans le forum C++
    Réponses: 9
    Dernier message: 18/10/2006, 13h31
  4. classe statique objet
    Par drKzs dans le forum Langage
    Réponses: 8
    Dernier message: 04/09/2006, 11h58
  5. Classe statique
    Par jeje99 dans le forum Langage
    Réponses: 12
    Dernier message: 04/01/2006, 16h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo