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

Collection et Stream Java Discussion :

Faire une taches toutes les x mins


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 76
    Points : 49
    Points
    49
    Par défaut Faire une taches toutes les x mins
    Bonjour,

    Je voudrais faire une application qui change le fond d'écran toutes les x mins sous ubuntu. Je voudrais la développer en java si possible !

    J'ai lu que je devrais me pencher vers la classe Timer et TimerTask mais en faisant des essais, je pense pas que sa réponde à mon besoin. C'est à dire, lancer la tache en fond et laisser le démon tourner. Je ne sait pas si j'utilise les bons termes.
    Je voudrais donc pouvoir lancer une tache de fond et la laisser tourner ^^ !

    D'autres idée ou précisions ? !

    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 299
    Points : 422
    Points
    422
    Par défaut
    Si tu n'as pas d'interface, et que tu veux juste un processus qui tourne en "arriere plan", je pense que tu devrais faire un Thread qui ne sera justement pas Deamon (sinon la JVM va quitter...). Sa méthode run comportera une boucle sans fin qui exécutera ton action, puis un sleep.

    Je ne suis pas super sûr de moi quand à la bonne pratique côté Thread, mais je ferais comme suit (les commentaires suivant me permettront peut-être de l'améliorer justement !):

    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
    24
    25
    26
    27
    28
     
    class MonThread extends Thread{
    	private boolean encours = true;
     
    	public void lance(){encours = true;}
    	public void arrete(){encours = false;}
     
    	@Override
    	public void run() {
    		try{	
    			while(true){
    				if(interrupted()) return;
    				if(encours){
    					// TODO : ton code
     
    					//Pause x millisec
    					try{
    						sleep(x, 0);
    					}catch(InterruptedException e){
    						e.printStackTrace();
    					};
    				}
    			}
    		}catch (InterruptedException e){
    			e.printStackTrace();
    		}
    	}	
    }
    Tu lances ton thread comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MonThread thread = new MonThread();
    thread.setDaemon(false);
    thread.start();

  3. #3
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    T'es même pas obliger de faire un Thread, il suffit de faire un programme Java qui tourne en boucle. Ensuite effectivement faire un TimerTask/Task fera tout à fait l'affaire.

    Le problème sera plutôt de changer le fond d'écran.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 299
    Points : 422
    Points
    422
    Par défaut
    Pour changer ton fond, il va surement falloir utiliser un Runtime.
    Pour la ligne de commande tu vas trouver des infos ICI
    En gros, tu vas utiliser java pour exécuter une ligne de commande...
    Mais si tu regardes dans le même lien, quelqu'un propose un programme qui fait ce que tu demandes.

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    je rajoute que faire tourner une jvm en fond pour changer l ecran c est overkill. le plus propre est un petit script style bash invoque par crontab toutes les X minutes .....

  6. #6
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    je rajoute que faire tourner une jvm en fond pour changer l ecran c est overkill. le plus propre est un petit script style bash invoque par crontab toutes les X minutes .....
    +1

    En plus, il faut noter que c'est supporté de base dans Ubuntu en tout cas dans la dernière version (10.04) via un fichier XML.

  7. #7
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    Hum merci de vos précisions et de vos commentaires constructifs !

    Tout d'abord, j'ai une interface graphique pour pouvoir donner l'opportunité à l'utilisateur de choisir le temps entre chaque changement de fond d'écran et choisir le dossier d'image qu'il voudrait choisir !

    Pour le changement effectivement, je comptais me servir du runtime pour exécuter la commande gconf !

    Donc, finalement, je ne sait pas si je vais faire sa en Java mais peut-être comme tchize me le dit : en Bash !
    Pense tu que je devrais utiliser Zenity pour faire une sorte d'ihm?!
    Crontab ?


    Merci à vous

  8. #8
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    Il n'y a pas déjà quelques centaines de programmes pour ça ?

    L'utilitaire de configuration de KDE le propose déjà, out-of-the-box.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Faire une somme toutes les n lignes
    Par collosus dans le forum R
    Réponses: 3
    Dernier message: 30/04/2013, 14h19
  2. faire une mesure toutes les 10 minutes
    Par audrey76 dans le forum VB.NET
    Réponses: 8
    Dernier message: 04/04/2009, 13h05
  3. Réinitialiser une tache toutes les heures
    Par tryks dans le forum Langage
    Réponses: 6
    Dernier message: 25/02/2009, 11h15
  4. [Dates] Faire varier une donnée toutes les 30 minutes
    Par esther60 dans le forum Langage
    Réponses: 7
    Dernier message: 18/04/2008, 20h18
  5. [WD10]Executer une tache toute les x min, sec, etc.
    Par tunidesign dans le forum WinDev
    Réponses: 2
    Dernier message: 11/02/2008, 03h31

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