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 :

Retour à l'activite précédente à heure fixe


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 38
    Par défaut Retour à l'activite précédente à heure fixe
    Bonjour,

    Mon application comporte 2 activités, l'une étant appelé par la première en lui passant un argument. Mon, problème est qu'à heure fixe, il faudrait que cette activité laisse place à la première (comme si l'on appelait un onBackPressed()).

    Quelle serait la meilleure solution pour obtenir ce résultat ?

    D'avance merci pour vos suggestions

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2012
    Messages : 133
    Par défaut
    Bonjour,

    Sans être un grand expert, ni en sachant ce que font tes activités, il faut que tu lances soit un Thread, soit une tache dans ta seconde activité ce qui permettra de tourner en arrière plan et d'être indépendamment du reste pour éviter d'être bloquant. Une fois cela, tu boucles en faisant à chaque itération une vérification si l'heure est égale à celle que tu veux.

    Une fois que la condition est rempli, tu fermes l'activité et ce qu'il faut en revoyant soit avec un résultat ou non.

    Pour obtenir une condition à heure fixe, il suffit de vérifier l'heure en faisant un extract des mins et des secondes et ensuite vérifier si c'est égale à 0, mais laisse toi une marge de vérification entre 59'' 59' et 00'' 01' par exemple.

  3. #3
    Expert confirmé

    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
    Billets dans le blog
    3
    Par défaut
    Sans être un grand expert, ni en sachant ce que font tes activités, il faut que tu lances soit un Thread, soit une tache dans ta seconde activité ce qui permettra de tourner en arrière plan et d'être indépendamment du reste pour éviter d'être bloquant. Une fois cela, tu boucles en faisant à chaque itération une vérification si l'heure est égale à celle que tu veux.


    Surtout pas, pour deux raisons:
    1) Par définition, une boucle "infine" (tant qu'une condition n'est pas remplie) est un non-pattern. On lui préfère largement le pattern: "quand la condition est remplie elle emet un évenement", et "on attend cet evement".
    2) La boucle infine va utiliser 100% du CPU (et donc 100% de la batterie), à moins d'utiliser la fonction (à bannir vraiment définitivement) de Thread.sleep....


    Le moyen le plus simple est d'utiliser un "handler":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    class MonActivityFille extends Activity
    {
         private Handler waitHandler;
     
         private Runnable waitExecution = new Runnable() {
             @Override
             public void run() {
                 MonActivityFille.this.onTimeEllapsed();
             }
          }
     
         public void onCreate(...)
         {
               ...
               waitHandler = new Handler();
               waitHandler.postAtTime(waitExecution, ??? );
         }
     
         public void onTimeEllapsed() {
               finish();
         }
    }
    Si le téléphone entre en mode veille il ne sera pas reveillé, mais dès la sortie de veille, l'activité sera terminée.

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2012
    Messages : 133
    Par défaut
    Oui, pour les thread, j'utilise le Thread.sleep et un flag dans la condition qu'il suffit de mettre à false. Je ne connais pas encore de trop les handlers, mais cela ma l'air bien et je vais essayer dans profiter pour tester...

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 38
    Par défaut
    Merci pour vos réponses, je vais essayer la solution de nicroman

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 38
    Par défaut
    Ta solution est intéressante, mais la fonction postAtTime() se base sur le temps écoulé depuis le démarrage de l'appareil. Existe-t-il une solution pour la faire se déclencher à une heure fixe ? Par exemple 18:45:00.000 ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Bouton retour à l'activité précédente
    Par anto2b dans le forum Composants graphiques
    Réponses: 3
    Dernier message: 19/12/2011, 09h41
  2. Tâches routinières à heures fixes !
    Par wishmastah dans le forum Langage
    Réponses: 4
    Dernier message: 18/03/2006, 14h42
  3. [PROCEDURE] déclenchement d'une procédure à heure fixe
    Par Fragonard dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 11/08/2005, 11h03
  4. Lancer une methode a heure fixe
    Par Le Veilleur dans le forum C++Builder
    Réponses: 2
    Dernier message: 27/11/2004, 20h52

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