2011-12-13 9 views
1

J'écris une application Android qui a différentes parties, y compris un dictionnaire. Pour mettre en œuvre un dictionnaire, je la technique suivante:Chargement d'une grande quantité de données à partir de la base de données Sqlite dans Android

  1. Lire tous les mots de la base de données SQLite et de les stocker dans la liste de tableau. ("sélectionnez * du vocabulaire").

  2. Recherche de définitions, en utilisant une simple recherche binaire dans une liste de matrices.

Il faut trop de temps pour extraire les mots de la base de données (environ 50000 mots) et parfois, il y a une exception "mémoire insuffisante". Cependant, après le chargement des données, cela fonctionne très rapidement pour trouver la définition des mots. Pourriez-vous me guider comment je peux implémenter le dictionnaire?

Répondre

4

Les bases de données sont généralement conçues pour un accès rapide à la mémoire (accès au disque). Prendre votre base de données entière et la mettre en mémoire n'a pas beaucoup de sens. Utilisez sql pour accéder uniquement aux informations dont vous avez besoin pour la tâche en question. Faites votre index sur la clé de recherche pour la performance

+1

+1, je suis vraiment étonné par la façon dont les requêtes rapides sont sur Android en utilisant SQLite, même les requêtes complexes. J'utilise maintenant la base de données comme mémoire principale pour la plupart de mes applications (en lisant quand j'ai besoin d'informations, en enregistrant dès que l'utilisateur saisit une entrée) – Guillaume

+1

En tant que sidenote, c'est vrai PARCE QUE la base de données est locale - Lorsqu'il existe un réseau entre le serveur de base de données et le serveur d'applications, il est alors logique de "mettre en mémoire cache" les données localement en mémoire. Ce n'est pas le cas chez Android, évidemment. – Guillaume

+0

En fait, je veux donner à l'utilisateur les définitions en temps réel. D'un autre côté, editText a un TextWatcher. Je dois récupérer des données de la base de données lorsque le texte de editText change. Pensez-vous toujours que c'est une bonne idée d'utiliser la base de données ou d'utiliser une liste de tableaux? Aidez-moi, s'il vous plaît. –

Questions connexes