Questions sur l'utilisation du service de sauvegarde Android avec une base de données SQLite

Mon application stocke toutes les données et préférences utilisateur dans une base de données SQLite, que j'aimerais persister si l'utilisateur obtient un nouveau téléphone, réinstalle ou réinitialise l'usine. J'ai fait une lecture dans le Guide de sauvegarde de données d'Android et leur service de sauvegarde Android , mais j'ai encore des questions avant de commencer.

  1. Les données sont-elles restaurées lors de l'installation ou lors du lancement initial de mon application? C'est-à-dire, le fichier existe-t-il avant que le code de mon activité principale ne soit appelé?
  2. Si ma classe SQLiteOpenHelper gère déjà les mises à niveau, est-ce qu'il y a autre chose que je dois faire pour gérer la restauration d'un db plus ancien? Je suppose que non, si le db existe avant que mon application ne soit lancée.
  3. Devrais-je faire face à des problèmes de concurrence lors de la sauvegarde car le BackupManager prend du temps? Si un utilisateur entre de nouvelles données et j'appelle dataChanged() , puis il en va de même avant que BackupManager appelle onBackup() , comment ces changements de données seront-ils traités? Will BackupManager sauvegardera-t-il simplement la dernière version de la base de données (qui devrait inclure les deux modifications)?
  4. Quels problèmes rencontrerai-je en essayant de sauvegarder / restaurer une base de données SQLite? J'ai vu des développeurs dire qu'une base de données sur un périphérique peut ne pas être compatible avec une base de données sur un autre. Je voudrais simplement sauvegarder la base de données en utilisant FileBackupHelper , car il semble assez simple à faire . Au moins un développeur semble avoir résolu au moins certains problèmes de compatibilité en désactivant Write Ahead Logging . Si je prends cette approche, quel taux d'échec j'attendrais? Si très élevé, je pourrais envisager de convertir un fichier CSV et de revenir pendant le processus.
  5. Si une restauration échoue, puis-je l'attraper, informer l'utilisateur et enregistrer une copie des données gênantes dans le stockage? Pour le dépannage et l'information de l'utilisateur.
  6. L'opération de sauvegarde n'est pas "threadafe". Précisez comment gérer. Android dit:

Pour vous assurer que votre agent de sauvegarde ne lit ou n'écris pas vos fichiers en même temps que vos activités, vous devez utiliser des instructions synchronisées chaque fois que vous effectuez une lecture ou une écriture.

  • Existe-t-il un équivalent AppCompat de Widget.Material.Spinner.Underlined?
  • Impossible de publier quoi que ce soit sur LinkedIN en utilisant linkedin-j
  • Studio Android 0.4.2 + gradle + code source Android
  • Andoird: commutateur personnalisé: comment faire du pouce plus de 50% d'une piste sans utiliser d'images
  • Deux activités de lanceur
  • Impossible d'importer org.apache.http.HttpResponse dans Android Studio
    • Est-ce que cela signifie que je dois mettre chaque lecture / écriture dans ma base de données dans une déclaration synchronized ? C'est-à-dire, je dois ajouter cette place à tous les endroits où mes activités se chargent à partir du db ou écrivent-elles des informations? C'est beaucoup d'endroits.
    • Ou veut-il seulement dire que le code de sauvegarde doit être synchronized ?

    Merci pour l'aide. Je veux juste faire cela correctement et garder mes utilisateurs heureux quand ils ont de nouveaux téléphones ce Noël!

  • Recommandation de sécurité Android In-app - qu'est-ce que cela signifie?
  • Obtenir "version de fichier de classe non prise en charge 52.0" après avoir inclus un module dans un projet
  • Dénience d'autorisation: startActivity demande à s'exécuter en tant qu'utilisateur -2 mais appelle depuis l'utilisateur 0; Cela requiert android.permission.INTERACT_ACROSS_USERS_FULL
  • Android - Obtenez UserData utilisant AccountManager / Nom et prénom du propriétaire du téléphone
  • Comment récupérer et modifier le contenu HTML à partir de WebView avec Http Post
  • Atteinte réussie de la transaction pour Android
  • One Solution collect form web for “Questions sur l'utilisation du service de sauvegarde Android avec une base de données SQLite”

    À partir de la documentation Android

    Cela devrait répondre à vos questions 1 et 2:

     Android automatically performs a restore operation when your application is installed and there exists backup data associated with the user. The primary scenario in which backup data is restored is when a user resets their device or upgrades to a new device and their previously installed applications are re-installed. 

    3: Étant donné que vos données seront restaurées pendant l'installation, je ne pense pas que vous allez faire face à des problèmes de concurrence

    4:

     Data backup is not guaranteed to be available on all Android-powered devices. However, your application is not adversely affected in the event that a device does not provide a backup transport. If you believe that users will benefit from data backup in your application, then you can implement it as described in this document, test it, then publish your application without any concern about which devices actually perform backup. 

    5: Je ne le pense pas.

    6: "chaque fois que vous effectuez une lecture ou une écriture" semble être explicite par lui-même. Chaque fois que vous effectuez une opération sur la base de données

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.