2013-07-26 4 views
9

Je suppose que tout le monde a fait l'expérience de son application fonctionne très bien lorsque vous l'essayez pendant 30 minutes. Mais quand une application se trouve en arrière-plan de l'appareil pendant un jour ou deux, vous obtenez votre NullPointerExceptions et les choses ne fonctionnent pas comme prévu, car le Garbage Collector a volé vos affaires. Existe-t-il un moyen de simuler une application pendant longtemps en arrière-plan?Android: simuler une longue durée

+0

Qu'est-ce que 'NullPointerException's obtenez-vous? – andy256

Répondre

0

Vous n'avez pas vraiment besoin d'attendre un certain laps de temps. Vous avez juste à faire quelque chose qui mange de la mémoire. Cela peut être une application spéciale que vous créez pour la tâche, mais vous n'en avez pas vraiment besoin. D'après mon expérience, la plupart des jeux semblent fonctionner. Les jeux avec beaucoup de graphiques ont tendance à fonctionner le mieux, car ils utilisent beaucoup de mémoire pour les textures, etc. Angry Birds ou Candy Crush fonctionnera également, même s'il n'y a pas de graphiques avancés ou de traitement lourd (probablement pour le la même raison qu'ils mâchent à travers la batterie). Normalement, après avoir joué juste un niveau, vous pouvez retourner à votre activité et voir ce qui s'est perdu. De manière optimale, vous utiliserez des méthodes intelligentes pour conserver/initialiser vos données, cela ne devrait donc pas poser de problème, mais de temps en temps, vous (ou un utilisateur) rencontrez quelque chose d'inattendu, et cela peut vous aider. dépistez-le.

4

Paramètres -> Options du développeur -> Limite du processus d'arrière-plan -> Au plus 1 processus. N'oubliez pas de le remettre lorsque vous avez fini de vous amuser. À votre santé.

+0

Il n'y a rien de tel que d'être en dormance. Si en dormant, vous voulez dire encore en RAM, en état de pause, cela n'a aucun sens de le tester après 30 minutes, s'il est encore en RAM. Tout sera pareil. GC n'affecte que les objets qui ne sont plus référencés. Donc GC seul n'affectera rien. Ce qui affectera cependant le cycle de vie de l'application est la recréation d'activités ou de fragments qui peuvent être testés en utilisant la méthode ci-dessus. –

+0

Encore une fois, le GC va collecter des objets non référencés même si l'activité est au premier plan, je n'en ai pas du tout douté. Il * ne recueillera cependant aucun objet référencé, quel que soit l'état. Comme les objets que vous utilisez dans l'activité sont hébergés * dans cette activité, la référence est vérifiée. Si vous savez que c'est le contraire, veuillez fournir des références. Cependant, je n'ai pas du tout rencontré ce que vous décrivez. –

+0

From SDK Dev: "Lorsque votre activité est arrêtée, l'objet Activity reste en mémoire et est rappelé lorsque l'activité reprend.Vous n'avez pas besoin de réinitialiser les composants qui ont été créés pendant l'une des méthodes de rappel précédant l'état Reprise. "Donc, sauf si vous faites quelque chose hors de l'ordinaire (où bien sûr vous devez vous assurer que tout va bien), rien ne va être recueilli par le GC; parce que, bien, ces objets ne sont pas * garbage *. Encore. Donc, la seule chose que vous devez vérifier est si l'activité a été détruite. Lequel, encore une fois, vous pouvez le faire en utilisant la méthode ci-dessus –