2017-03-21 5 views
1

Considérez la situation suivante. J'ai une application qui contient une grande quantité de données qui persiste dans les fichiers. Je génère un AsyncTask dans la méthode onPause à cette fin.La persistance de l'état des fichiers dans onPause() prend trop de temps

Le problème est que cela prend beaucoup de temps. Il se peut que l'utilisateur ferme l'activité et la redémarre, mais les fichiers ne sont pas entièrement enregistrés sur le disque avant que l'activité ne soit à nouveau créée. Pour cette raison, lors du prochain lancement, l'activité contient des données incorrectes. Comment puis-je résoudre ce problème, c'est-à-dire que les données sont entièrement enregistrées sur le disque avant le prochain lancement?

+0

Que économisez-vous dans ces fichiers? Pourquoi ne pas utiliser une base de données? –

+0

J'utilise gson, ce qui est utile car les fichiers seront exportés plus tard. Dans le cas de la base de données, n'y a-t-il pas le même problème (cela peut prendre trop de temps)? – AlexSee

Répondre

1

Il vous suffit de vérifier si vos données sont déjà stockées ou non. Évidemment, drapeau personnalisé, fichiers «touchés», etc. Rendez la logique de votre interface utilisateur plus facile pour éviter ce problème.

+0

En supposant que j'utilise un fichier touché, comment puis-je m'assurer de la résilience contre d'éventuels problèmes tels que: mon application est tuée lors de l'enregistrement des fichiers, il y a un problème de permissions et je ne peux pas toucher un fichier etc. En d'autres termes, comment puis-je distinguer une situation dans laquelle j'attends que le fichier soit touché et une situation où une erreur s'est produite? En outre, que faire lorsque j'ouvre l'application et que j'attends toujours que le fichier soit touché? Afficher une barre de progression et vérifier certains intervalles fixes? – AlexSee

+0

Dans ma pratique, j'utilise les services de premier plan et le drapeau start_sticky – Vyacheslav

+0

@AlexSee, je veux dire dans mon code un travail énorme n'est pas exécuté dans l'activité mais le service – Vyacheslav