Dans mon application, il est possible d'avoir une pile d'activités sans fin. Le scénario est que vous commencez sur la page d'un utilisateur qui a une liste de personnes qui sont des «amis» de cet utilisateur. Vous pouvez ensuite cliquer sur un ami pour aller sur sa page, qui ressemble à la précédente, où vous pouvez cliquer sur un autre ami pour accéder à sa page, et ainsi de suite ...Schéma d'activités sans fin
Le gros problème que je suis faire face est un tas indigène sans fin. Je crois que j'ajoute à ce tas chaque fois qu'une vue est gonflée. Après quelques itérations de cela, je reçois constamment des erreurs d'OOM, donc je dois trouver une sorte de solution. L'astuce est, je veux maintenir les dernières activités au minimum pour naviguer dans l'histoire. Le meilleur que je peux trouver est de surveiller la pile d'activité, puis commencer les activités de finition quand il atteint un certain point. Cela semble-t-il être une approche solide, ou même plus loin, quelqu'un peut-il me diriger vers une mise en œuvre de cette approche ou d'une autre approche?
Merci
modifier:
La pile est très simple. Cliquez sur un listrow (un ami), allez à leur page. Cela utilise un appel startActivity normal avec une intention sur la même page que vous êtes sur, et une intention supplémentaire avec l'ID utilisateur qui appellera alors la base de données ou un appel api distant pour obtenir les données de l'utilisateur. De plus, pour faire le suivi de Dalvik vs Native, je vérifie régulièrement la mémoire meminfo pendant ma navigation. Je garde le tas dalvik aussi petit que possible, nettoyant les ressources dans onStop. Le tas indigène se développe beaucoup plus vite. Je n'ai pas de références concrètes aux bitmaps, mais beaucoup d'éléments graphiques à l'écran à partir des inflations. Est-ce que ces drawables mèneraient à l'androïde qui tue mon activité finalement? Autant que je sache, ils mènent à l'OOM sans qu'aucune de mes activités ne soit détruite préventivement. Si je pouvais détruire manuellement mes activités au lieu de simplement les arrêter (comme Android prétend le faire quand il manque de mémoire), et conserver l'activité détruite sur la pile avec l'état sauvegardé, ce serait idéal.
modifier à nouveau:
une autre clé est que ces activités auront d'autres activités mélangées avec eux par exemple
utilisateur -> utilisateur -> activité a -> utilisateur -> activité b -> utilisateur
c'est pourquoi je veux utiliser le haut dans la pile, donc je sais quand je dois aller une activité de l'utilisateur et quand je ne le fais pas.
comment exactement vous implémentez votre « pile » de pages de l'utilisateur? – josephus