Android Requête SQLite, Insert, Update, Delete, Toujours Besoin d'être Sur le Thread d'arrière-plan?
J'utilise actuellement Chargeurs pour saisir des données à partir de mon ContentProvider (pour activer la fonction d'auto-mise à jour de mon Curseurs). Cette approche est simple pour l'Interrogation de la base de données, cependant, il semble mal adaptée pour toute autre DB opération (telles que Insert, Update, Delete).
Mes questions sont:
- Faire tout SQLite opérations doivent être sur un thread d'arrière-plan, ou est-il sécuritaire de faire des opérations simples, comme l'Insertion, la mise à Jour ou la Suppression d'une ligne unique sur le thread d'INTERFACE utilisateur?
- Ce qui est une belle conception de bagout pour s'assurer que toutes les requêtes passent par un thread d'arrière-plan? Je tiens à mettre en œuvre AsyncTask, dois-je créer un SuperTask façon de parler qui s'étend AsyncTask et Exécute chaque SQLite opération? (Bonus: Pouvez-vous fournir bare-bones exemple?)
- Nous devrions utiliser le thread d'arrière-plan pour les opérations en bloc..... Insertion, mise à Jour ou la Suppression d'une seule ligne peut être fait sur le thread de l'INTERFACE utilisateur.
Vous devez vous connecter pour publier un commentaire.
J'ai fait SQLite opérations sur mon Thread de l'INTERFACE utilisateur. Je suppose que la question est vraiment de savoir si vos requêtes seront jamais prendre beaucoup de temps ou pas. Je n'ai jamais eu mon plantage de l'application de prendre trop de temps à exécuter des appels SQL sur ma base de données SQLite.
Avec cela dit, si vous prévoyez d'écrire des requêtes complexes qui peuvent prendre du temps à charger, vous voulez l'exécuter comme une AsyncTask ou du Fil et de l'utilisation des rappels de mise à jour de votre INTERFACE utilisateur en cas de besoin.
C'est un excellent tutoriel sur SQLite sous Android (Il aborde aussi certains sql complexe des problèmes de timing tu parlais):
http://www.vogella.com/tutorials/AndroidSQLite/article.html
Tous SQLite exploitation n'est pas besoin d'être sur un arrière-plan, mais devrait être. Même de simples mises à jour de lignes peuvent influer sur le thread de l'INTERFACE utilisateur et donc la réactivité de l'application.
Android comprend les AsyncQueryHandler classe abstraite:
Voici deux exemples d'implémentations de À l'aide de AsyncQueryHandler pour Accéder aux Fournisseurs de Contenu de manière Asynchrone dans Android. Un membre de la classe:
Une classe anonyme:
Plus de détails:
La Mise En Œuvre De AsyncQueryHandler
http://www.trustydroid.com/blog/2014/10/07/using-asyncqueryhandler-with-content-provider/