1. #1
    Membre confirmé
    Avatar de alheuredudejeuner
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2005
    Messages
    296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2005
    Messages : 296
    Points : 491
    Points
    491
    Billets dans le blog
    3

    Par défaut Tokyo fmx terminer une application

    Bonjour,

    mon application se fige de temps en temps avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FreeAndNil(Application);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //    Application.MainForm.DisposeOf;
    //    SharedActivity.Finish;
    ne fonctionne pas.

    quel est la bonne méthode.

    Release dans le Onclose est déprécié.
    Quelle est la bonne méthode ?

    cordialement

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    novembre 2007
    Messages
    2 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : novembre 2007
    Messages : 2 486
    Points : 2 290
    Points
    2 290

    Par défaut

    FreeAndNil(Application); ???????????????????????????????????????

    Jamais vu ça .... L'application se ferme, c'est tout.

  3. #3
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    novembre 2002
    Messages
    6 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : novembre 2002
    Messages : 6 812
    Points : 21 788
    Points
    21 788

    Par défaut

    Il n'est pas surprenant qu'en détruisant l'objet responsable de l'application cela coince... Il suffit d'appeler Application.Terminate
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Produits : UPnP, RemoteOffice, FlashPascal

  4. #4
    Membre confirmé Avatar de Cirec
    Profil pro
    Inscrit en
    octobre 2010
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2010
    Messages : 213
    Points : 456
    Points
    456

    Par défaut

    Bonjour,

    je voudrais juste attirer votre attention sur le fait qu'en utilisant "Application.Terminate"
    l'évènement "OnClose" n'est pas déclenché que ce soit en VCL ou en FMX

    vous pouvez tester en mettant un "Beep;" dans le "OnClose" de la fiche
    si vous appelez "Application.Terminate" vous n'aurez pas de Bip

    par contre avec "Application.MainForm.Close" on a bien le bip et l'application se ferme proprement.

    Perso j'utilise "Application.Terminate" uniquement en cas de problèmes (pour ne pas enregistrer la config dans le OnClose par Ex.)
    sinon c'est "Application.MainForm.Close" ou simplement "Close" depuis la MainForm

    Du coup je suis très étonné de voir ce genre de code dans le squelette de base d'une MainForm FMx ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.ToolbarCloseButtonClick(Sender: TObject);
    begin
      Application.Terminate;
    end;
    ... et je me pose des questions
    j'aimerais bien avoir votre avis sur le sujet

    Cordialement,
    @+

  5. #5
    Membre confirmé
    Avatar de alheuredudejeuner
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2005
    Messages
    296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2005
    Messages : 296
    Points : 491
    Points
    491
    Billets dans le blog
    3

    Par défaut

    Bonsoir

    Close
    Application.Terminate

    fonctionne sur Windows

    avec close l'appli se fige sur Android
    avec Application.Terminate, l'appli disparaît de l'écran mais n'est pas fermée.

    J'ai cherché avant de poser la question, le problème se pose depuis XE5:

    Sur Windows, je n'ai pas de memory lake.

    J'ai aussi du bloquer le harwar back
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      if Key = vkHardwareBack
      then Key := 0;
    là j'avais une violation d'accès à la fermeture après que j'ai passer mon code de fermeture.

    Cordialement

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    8 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 8 442
    Points : 19 720
    Points
    19 720
    Billets dans le blog
    4

    Par défaut

    Bonjour,

    un peu de recherches et l'on trouve aussi la méthode Finish spécifiques à la plateforme.

    je ne fait que des déductions car cela semble dépendre des versions de Delphi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    uses ... FMX.Helpers.Android ? ou Androidapi.Helpers, Androidapi.JNI.App ? 
     
    // cloture
    SharedActivity.finish;
    A mon avis, il doit aussi y avoir une relation avec ce que le programme fait. Un simple programme sans utilisation de "services extérieurs" se terminera avec un simple Terminate ou Close, c'est s'il y a des appels extérieurs (utilisation de Intents) que ça se corse
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
    J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
    Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous

  7. #7
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    novembre 2002
    Messages
    6 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : novembre 2002
    Messages : 6 812
    Points : 21 788
    Points
    21 788

    Par défaut

    attention, sur mobile, la durée de vie d'une application n'est pas la même que sur desktop. C'est l'OS qui décide de quand il veux tuer une application pour libérer des ressources, ou s'il préfère la garder en mémoire pour pouvoir la relancer plus rapidement. De même, une application qui passe "en arrière plan" peu très bien être arrêtée par l'OS alors que sous Windows elle continuera à fonctionner tant qu'on ne la ferme pas.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Produits : UPnP, RemoteOffice, FlashPascal

Discussions similaires

  1. Terminer une application externe.
    Par JJJJJ dans le forum Langage
    Réponses: 14
    Dernier message: 24/12/2009, 14h06
  2. Terminer une application proprement
    Par alain82 dans le forum VB.NET
    Réponses: 6
    Dernier message: 18/08/2009, 16h45
  3. Réponses: 3
    Dernier message: 20/10/2008, 20h52
  4. Réponses: 3
    Dernier message: 07/12/2006, 12h16
  5. [Netbeans] terminer une application
    Par vasilov dans le forum NetBeans
    Réponses: 3
    Dernier message: 14/07/2005, 09h41

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