Quelles sont les meilleures pratiques pour SQLite sous Android?

Ce qui serait considéré comme les meilleures pratiques lors de l'exécution de requêtes sur une base de données SQLite dans une application Android?

Est-il sûr d'exécuter des insertions, des suppressions et des requêtes select à partir d'une AsyncTask est doInBackground? Ou dois-je utiliser le Thread d'INTERFACE utilisateur? Je suppose que les requêtes de base de données peut être "lourd" et ne doit pas utiliser le thread d'INTERFACE utilisateur comme il peut verrouiller le app - résultant en une L'Application Ne Répond Pas (ANR).

Si j'ai plusieurs AsyncTasks, devraient-ils partager une connexion ou doivent-ils ouvrir une connexion de chaque?

Sont là des pratiques exemplaires pour ces scénarios?

  • Quoi que vous fassiez, n'oubliez pas de désinfecter vos données si votre fournisseur de contenu (ou SQLite interface) est orienté public!
  • Vous avez certainement ne devriez PAS faire de db accède à partir de la thread de l'INTERFACE utilisateur, je peux vous dire que beaucoup.
  • Pourquoi pas? Il y a sûrement des cas d'utilisation où il est valide pour ce faire?
  • Si vous n'avez aucune I/O, réseau d'accès, etc. depuis le thread de l'INTERFACE utilisateur, l'ensemble de l'appareil se fige jusqu'à ce que l'opération est terminée. Si elle se termine dans 1/20 de seconde, alors tout va bien. Si cela prend plus de temps, vous avez eu une mauvaise expérience utilisateur.