2010-11-08 4 views

Répondre

2

Dépend de la puissance de traitement et de la longueur de l'historique des annulations que vous souhaitez conserver. Si vous pouvez appliquer les transformations avec une vitesse raisonnable, vous pouvez simplement conserver une copie d'une opération bitmap x opérations et, dans le cas d'une annulation, il suffit de lui appliquer les dernières transformations x-1.

2

À quelle vitesse avez-vous besoin de l'annulation? Rappelez-vous: la mémoire est plus rapide que toute autre chose.

De combien de bitmaps avez-vous besoin pour pouvoir revenir en arrière et annuler? Si c'est beaucoup, alors oui, les fichiers temporaires pourraient être les meilleurs. Et si elles ferment l'application et reviennent plus tard (ou si l'application est supprimée pour libérer de la mémoire)? A quel point est-ce important d'arriver à ces défaites? Si c'est important, vous devez les enregistrer sur le disque.

Quelle est la taille des images? Cela pourrait également prendre en compte votre décision quant au nombre de personnes que vous pourriez garder en mémoire.

Peut-être même envisager certains des deux? Gardez le plus récent en mémoire et enregistrez-le ainsi que tous les autres sur le disque?

2

Que vous ayez ou non de la place sur le tas, le stockage de l'état d'annulation dans votre stockage persistant (et non dans les fichiers temporaires) est votre seule option. L'utilisateur peut quitter votre application, à quel point votre processus peut être tué. Au retour, vous devez redémarrer votre application avec le même état que celui qu'elle a vu la dernière fois. Tout ce que vous avez dans votre propre tas ne sera plus là; vous ne pouvez pas mettre de grandes bitmaps dans l'ensemble dans onSaveInstanceState(). Vous devez donc les mettre dans un stockage persistant. Assurez-vous de ne pas bloquer l'interface utilisateur en même temps - écrivez un nouvel état de manière asynchrone à partir de la mise à jour de l'interface utilisateur.

Questions connexes