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 :

Multithreading sur Android


Sujet :

Android

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 415
    Points : 125
    Points
    125
    Par défaut Multithreading sur Android
    Bonjour,

    j'aurais besoin de réaliser du multithreading dans une application qui réalise un gros calcul car celle-ci fige le temps du calcul, pour le reporter sur un autre coeur, mais je ne sais pas comment m'y prendre ?

    merci de votre aide

  2. #2
    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
    Je n'ai pas tout compris mais...

    Normalement tout traitement long doit être réalisé dans un AsyncTask...
    (ou dans un thread, mais plus complexe pour synchroniser avec l'application).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 415
    Points : 125
    Points
    125
    Par défaut
    Sur pc prenons l'exemple d'un dual-core, tu as un thread principal qui se déroule sur le coeur principal (qui gère affichage, click...) et un second thread où j'effectue les calculs, mais sur Android comment ça se passe ?
    De plus, il y a la gestion des accès concurrent avec lock() et unlock().

  4. #4
    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
    Exactement pareil... Je ne comprends pas la raison de la question en fait...
    Qu'est ce qui te "semble" différent entre un PC et un smartphone ? D'autant que je ne vois pas ce que viens faire le "nombre de cores" ici...

    Pour les accès "concurrents", en général, ils sont très limités. Le langage java offre une panoplie conséquente de fonctions de synchronisation ('synchronized' étant la plus courante, mais il y a aussi Object.wait() et Object.signal() ). Par contre, cela fait longtemps qu'on ne fait plus le lock/unlock /synchronized en programmation sauf dans de très rares cas... on préfère une approche évènementielle (surtout coté 'UI'):

    Thread UI:
    Démarre Thread "Calcul" en lui disant de passer l'évènement 'calcul fini' une fois terminé.

    Thread Calcul:
    Fait le calcul, et envoie l’évènement 'calcul fini' (avec les résultats du calcul).

    Thead UI:
    Reçoit l’évènement calcul fini, et récupère ainsi les résultats. En attendant, le thread UI peut processer tous les autres évènements d'interface.


    Le framework d'Android propose une classe exactement pour cela: AsyncTask.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 415
    Points : 125
    Points
    125
    Par défaut
    j'ai trouvé cet exemple
    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
    29
    30
    31
    private void traitementDesDonnees() {
     
    new Thread(new Runnable() {
     
    @Override
     
    public void run() {
     
    // Boucle de 1 a 10
     
    for (int i = 0; i < 10; i++) {
     
    try {
     
    // Attends 500 millisecondes
     
    Thread.sleep(500);
     
    } catch (InterruptedException e) {
     
    e.printStackTrace();
     
    }
     
    }
     
    }
     
    }).start();
     
    }
    si je lance plusieurs fois traitementDesDonnees() ne lance-t-on pas plusieurs threads ?
    Si c'est le cas, je voudrais qu'ils s’exécutent l'un après l'autre, merci.

Discussions similaires

  1. Réponses: 17
    Dernier message: 01/06/2009, 03h32
  2. Vos questions sur Android, Dalvik, et les GPhone
    Par Ricky81 dans le forum Android
    Réponses: 0
    Dernier message: 06/04/2009, 19h59
  3. Multithread sur une Base Access via ODBC
    Par jagboys dans le forum MFC
    Réponses: 6
    Dernier message: 12/03/2009, 11h19
  4. Connexion à firebird en multithread sur serveur multiprocesseur
    Par olivier_nicollet dans le forum Connexion aux bases de données
    Réponses: 9
    Dernier message: 17/12/2007, 16h24
  5. Réponses: 2
    Dernier message: 24/03/2006, 10h18

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