Dans mon projet, je fais de gros changements sur les pixels d'un bitmap et je veux ajouter une fonction d'annulation à ce projet. Le fait d'économiser plusieurs bitmaps sur la mémoire de VM n'est pas une bonne idée. Avant de commencer à mettre en œuvre je veux être sûr que je fais quelque chose de pas stupide ici.est-il une bonne idée de stocker des bitmaps en tant que fichiers temporaires pour implémenter annuler et rétablir fonctionnalité?
Répondre
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.
À 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?
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.
- 1. Stocker des fichiers temporaires
- 2. Sérialisation d'objet pour annuler/rétablir la fonctionnalité Java
- 3. Comment annuler une opération annuler/rétablir en cours?
- 4. Annuler, Rétablir la fonctionnalité avec la manipulation d'images dans Flex
- 5. annuler/rétablir l'événement
- 6. voir en tant que fonctionnalité html
- 7. Annuler/Rétablir dans WPF?
- 8. Annuler et rétablir des fonctionnalités dans un widget Texte Tkinter?
- 9. L'utilisation de SharePoint en tant que portail intranet/extranet est-elle une bonne idée?
- 10. servant seulement des fichiers gziped - une bonne idée?
- 11. Mulitple FileSystemWatchers une bonne idée?
- 12. CMS: stocker des pages personnalisées en tant que fichiers ou dans une base de données MySQL?
- 13. est-ce une bonne idée d'écrire une procédure stockée pour stocker un XML en SQL?
- 14. Pensez-vous que c'est une bonne idée de créer une boîte de connexion en tant que contrôle utilisateur?
- 15. Contrôle WebBrowser Annuler/Rétablir question
- 16. Est-ce une bonne idée d'écrire du javascript spécifique au domaine en tant que plugins jquery?
- 17. Quelle serait une bonne icône pour annuler et annuler une feuille de calcul?
- 18. Fichiers temporaires dans .Net
- 19. Annuler/rétablir avec UITextView (iOS/iPHone)
- 20. L'utilisation de * est-elle une bonne idée?
- 21. Sqlite comme magasin de cache pour stocker des copies statiques de pages dynamiques - Est-ce une bonne idée?
- 22. Comment implémenter une fonctionnalité de chat vocal en utilisant Python?
- 23. Est-ce une bonne idée d'agréger ViewModels?
- 24. Comment stocker une valeur de cookie en tant que chaîne?
- 25. Transférer des fichiers en tant que paramètres
- 26. Bonne idée/Mauvaise idée (/ autres idées?)
- 27. Multiple SingleThreadExecutors pour une application donnée ... une bonne idée?
- 28. Rails: est-ce une bonne idée de stocker la vue dans une variable globale?
- 29. passer à mysqli une bonne idée?
- 30. Implémenter Oauth en tant que fournisseur