-2
votes

Comment cacher des données pendant un certain temps, même après que l'application soit tuée?

Je suis certainement un débutant à Android.

Je construis une nouvelle application app. Je souhaite ajouter une fonctionnalité de mise en cache dans l'application comme celle de Chrome pour Android (mode Offlin) et Instagram.

Les données de l'application ira via JSON à partir du serveur. Donc, ce que je veux, l'application demande aux données du serveur de charger le flux et que les données sont mises en cache de sorte que si la prochaine fois que l'application est ouverte sans connexion Internet, les postes mis en cache sont affichés (le nombre de postes serait limité) Et la principale chose, les articles complets (en cliquant sur le poteau dans l'alimentation et en lisant l'ensemble de l'article dans une autre activité) que les vues des utilisateurs devraient également être mises en cache de telle sorte qu'il y aurait un maximum de "N" Nombre de messages dans le cache à tout moment. Temps, si le cache est rempli de n messages, le dernier message ajouté au cache sera supprimé et ainsi de suite ...

Comment faire pour faire cette mise en cache? Comme avec Picasso, le cache est réinitialisé à chaque fois que l'application est tuée. Et SharedPreferences et SQLite sont un peu de stockages permanents.

Alors, quelle est la meilleure façon d'atteindre ce type de cache. Y a-t-il des bibliothèques qui peuvent être utilisées ou devrais-je réussir à le faire avec SharedPreferences / SQLite / Stockage ??


0 commentaires

3 Réponses :


-1
votes

Si vous renvoyez le cycle de vie Android, vous devez vous retrouver pour savoir que dès que l'application est tuée non de son instance, ni aucune méthode ne peut fonctionner en arrière-plan.

Pour résoudre ce problème, vous pouvez mettre en œuvre la diffusion pour la même chose.

https://developer.android.com/guide/components/broadcasts

https://developer.android.com/guide/components/broadcast-Exceptions

Si vous avez trouvé cela utile, donnez-vous un coup de pouce! afin que les autres puissent connaître la bonne réponse!

Merci!


1 commentaires

Comment la diffusion va-t-elle aider avec le cache?



0
votes

Selon la taille des données que vous souhaitez stocker, l'historique des flux de nouvelles d'actualités sera probablement nombreux que les préférences partagées peuvent ne pas convenir à cette situation, je conseillerais à l'aide de la base de données de la chambre.

https://developer.android.com/training/data -Storage / salle / index.html


0 commentaires

1
votes

de la documentation:

Si vous souhaitez conserver des données temporairement, plutôt que de le stocker avec constamment, vous devez utiliser le répertoire de cache spécial pour sauver la Les données. chaque application dispose d'un répertoire de cache privé spécifiquement pour ces types de fichiers . Lorsque l'appareil est faible sur l'espace de stockage interne, Android peut supprimer ces fichiers de cache pour récupérer de l'espace. Cependant, vous ne devrait pas compter sur le système pour nettoyer ces fichiers pour vous. Toi devrait toujours maintenir les fichiers de cache vous-même et rester dans un Limite raisonnable de l'espace consommé, telle que 1MB . Quand l'utilisateur Désinstallez votre application, ces fichiers sont supprimés.

Si vous devez mettre en cache certains fichiers, vous devez utiliser CreateTempfile (). Par exemple, la méthode suivante extrait le nom de fichier d'une URL et crée un fichier avec ce nom dans le répertoire de cache interne de votre application: xxx

fichiers créés avec CreateTempfile () sont placés Dans un répertoire de cache privé à votre application. Vous devez supprimer régulièrement les fichiers dont vous n'avez plus besoin.

Pour lire un fichier existant, appelez OpenFileInput (nom), en passant le nom du fichier.

Vous pouvez obtenir un tableau de Toutes les noms de fichiers de votre application en appelant la filelle ().

Références:

Vue d'ensemble des données et des fichiers

Stockage de fichiers de cache

SharedPreferences est plus adapté aux paires de la valeur clé non pour le dumping JSON.
SQLite convient aux plus grandes bases de données.

  • STOCKAGE DE FICHIER INTERNIQUE: Stockez les fichiers App-privé sur le système de fichiers de périphérique
  • Stockage de fichiers externe: stockez des fichiers sur le système de fichiers externe partagé
  • Ceci est généralement pour les fichiers utilisateur partagés, tels que des photos.
  • SharedPreferences: stockez des données primitives privées dans des paires de clés.
  • Bases de données: stockez des données structurées dans une base de données privée.

7 commentaires

Woah mec! Vous l'avez si bien expliqué et effacé tous les doutes. Mais juste une dernière chose, alors devrais-je simplement faire une méthode et l'appeler à chaque fois qu'un article est ouvert?


Lorsque vous recevez le JSON de l'appel de l'API, comme pour l'article comme vous l'avez mentionné, vous pouvez appeler une fonction qui enregistre le JSON dans le fichier temporaire créé par la fonction ci-dessus. Ensuite, lorsque l'appel de l'API échoue, vous appelez une fonction pour lire les données du TEMPFILE et l'analyser dans JSON.


Vous pouvez utiliser FileInputStream ou FileOutPuitstream et transmettre l'objet Fichier dans le constructeur. Assurez-vous de le faire en asynchronisme (dans la tâche ASYNC, etc.), car vous ne voudrez pas mettre en pause votre application lorsque le cache est manipulé.


Avez-vous un cours de tutoriel en ligne sur YouTube / Udemy ailleurs? 😅 Je voudrais certainement faire un suivi. Merci.


Je ne connais pas de bon tutoriel vidéo, mais Cette réponse vous donnera la solution la plus facile que vous puissiez obtenir pour lire et écrire au fichier :)


@Samarpithrivastava comme pour le faire en arrière-plan (asynchrone), il serait préférable de suivre le officiel Documentation


Laissez-nous Continuez cette discussion dans le chat .