2017-07-18 2 views

Répondre

0

essayer de redémarrer votre application

Intent i = getBaseContext().getPackageManager() 
      .getLaunchIntentForPackage(getBaseContext().getPackageName()); 
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(i); 
+0

J'ai également trouvé ce morceau de code mais mon application est développée dans Appcelerator Titanium. Je sais que je peux utiliser hyperloop pour écrire du code Java, mais je pensais qu'il y avait une solution javascript. Merci! :) –

+1

@CristiCalacianu https://stackoverflow.com/questions/40452206/android-app-hangs-on-restart-appcelerator-titanium –

+0

J'ai placé cela dans mon tiapp.xml et cela aide à éviter que l'application ne réponde rouvrir. Ma question est comment puis-je redémarrer l'application en faisant quelque chose comme ceci: button.addEventlistener ('click', function() { // redémarrer l'application sur l'événement de clic }); –

0

En redémarrant voulez-vous dire comme reload alloy.js puis index.js, même quand il se passe comme si la demande a été fermée et relancée frais? Si alloy.js n'est pas ré-exécuté, vous pouvez essayer de garder une trace de toutes les fenêtres ouvertes dans un tableau, puis cliquer sur le bouton, fermer toutes les fenêtres et relancer index.js ou le contrôleur quel que soit votre point d'entrée à l'application.

Exemple de code à la fenêtre de référence magasin

windowStack.push({ 
    windowObj : windowObject, //Ti.UI.createWindow 
    winName : windowName,  //Provide a human readable name for logs 
    winId : windowId   //Unique id for every window you open to identify 
}); 

L'utilisation de ce que vous avez des références à toute la fenêtre tout le temps. Lorsque vous voulez fermer une fenêtre, suivez le processus LIFO et fermez toutes les fenêtres.

Note: Si vous fermez une fenêtre et si elle a exitOnClose valeur true, l'application entière et non fermer relancer. Dans ce cas, vous pouvez créer une fenêtre vide en tant que première fenêtre à insérer dans la pile. Lors du redémarrage, fermez toutes les fenêtres à l'exception de cette fenêtre spéciale dont exitOnClose est vrai et pour toutes les autres fenêtres, fausse. Donc, quand vous voulez fermer l'application entière, fermez toutes les fenêtres. Au démarrage, fermez tout sauf cette fenêtre spéciale.

De même, tout code d'initialisation d'application que vous avez, vous pouvez le déplacer vers un utilitaire JS qui sera appelé par la première fenêtre fonctionnelle que vous lancez.

Si vous avez encore besoin d'une autre entrée, je peux poster quelques exemples de code supplémentaires en fonction de ce dont vous avez besoin.

+0

Oui, quelque chose comme ça. Mais l'application n'est pas écrite en alliage. Je voudrais relancer l'application :) –

+0

Ensuite, l'approche ci-dessus que j'ai mentionné devrait fonctionner selon votre condition. Une fois que vous avez lancé depuis app.js, créez un tableau global et stockez chaque référence de fenêtre que vous ouvrez. Ce tableau fonctionnera comme une pile de fenêtre avec la fenêtre la plus haute à la fin du tableau. Vous pouvez maintenant utiliser ce tableau comme LIFO. J'ai inclus l'exemple de code ci-dessus. – Soumya