Comment puis-je obtenir mon SWT application à quitter correctement sous Mac OS X 10.5.6?
J'ai le texte suivant SWT code de test:
public static void main(String[] args) {
shell = new Shell();
shell.setText(APP_NAME + " " + APP_VERSION);
shell.addShellListener(new ShellListener() {
public void shellActivated(ShellEvent event) { }
public void shellClosed(ShellEvent event) { exit(); }
public void shellDeactivated(ShellEvent event) { }
public void shellDeiconified(ShellEvent event) { }
public void shellIconified(ShellEvent event) { }
});
shell.open();
display = shell.getDisplay();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
Ma méthode exit() est comme suit:
private void exit() {
System.exit(0);
}
J'essaie de quitter l'application par la fermeture de la coquille ("fenêtre") ou en la tirant vers le bas le menu de l'application (appelé "SWT") et en sélectionnant "Quitter".
Quand je fais cela, une SWT stub est laissé dans le Dock et le SWT application n'a pas réellement quitté. J'ai manuelle de mettre fin à la SWT application via Eclipse ou par l'intermédiaire de Forcer à Quitter.
J'ai essayé avec la v3.4 et v3.5 SWT pots de, sous Eclipse 3.4.1 sous Mac OS X 10.5.6 (Intel).
Est-il travailler j'ai besoin de faire pour être en mesure de quitter l'application quand je ferme la coquille?
Vous devez vous connecter pour publier un commentaire.
Vous n'êtes pas libérer les ressources natives correctement - vous avez une fuite de ressources.
Vous n'avez pas besoin de le faire:
La principale méthode de sortie lorsque la coquille est éliminé. Si vous doit utiliser un mode de sortie, de l'appeler après que vous avez éliminé tous SWT ressources:
Fois que vous avez alloué à la Coquille:
shell = new Shell();
certains indigènes des ressources ont été allouées avec elle. Vous devez disposer de ces ressources avant de vous quitter votre application:
Bien sûr, vous devez fournir la "coquille" de la variable de sortie() la méthode pour ce faire.
Remarque que je ne crois pas que vous avez besoin de disposer de l'Affichage, puisque vous n'avez pas le créer avec "
new Display()
". Mais rien dans SWT (à l'exception de quelques articles dans les cas où cela est documenté dans la JavaDoc) que vous créez avecnew
vous devez disposer lorsque vous avez terminé avec elle. Sinon, vous aurez fuite de ressources autochtones.