2011-09-26 2 views
0

J'ai une question sur les concepts de base android.Passer des tableaux entre activités ou prendre des données de la base de données

J'ai une activité qui passe deux tableaux d'entiers à une autre activité via une intention. Un tableau est un tableau d'ID (entiers) et l'autre est un tableau de noms (chaîne). J'ai toutes ces informations également dans une base de données SQLite. Qu'est-ce qui est mieux, transmettre toutes les informations en utilisant l'intention ou en passant seulement le tableau de l'ID et prendre les noms directement à partir de la base de données lorsque le OnCreate de la deuxième activité est invoqué ?.

Merci.

+2

pour quelque chose que petit passage avec intention devrait être ok. – blessenm

Répondre

1

La meilleure approche consiste à envoyer le moins d'informations possible par le biais des intentions. Cela permettra de garder votre code pour stocker/restaurer les données dans les endroits appropriés, ainsi que de réduire le temps de transition entre les activités.

Étant donné que vous avez déjà ces informations stockées dans la base de données et que vous disposez déjà des méthodes pour stocker et récupérer ces informations, pourquoi ajouter plus de travail pour vous-même en codifiant tout pour une intention? Envoyez simplement les informations d'identification et laissez le reste de votre framework faire le travail.

+0

Merci beaucoup Josh. Je n'enverrai que les ID via Intent et je rechercherai les informations de repos directement dans la base de données. – gutiory

1

En général, il est préférable de récupérer une grande quantité de données de la base de données plutôt que de les transmettre à l'intention, car le morcellement en intention nécessite de la mémoire. Donc, si vous voulez envoyer, par exemple, un tableau d'objets complexes contenant des bitmaps, le OutOfMemoryException peut être lancé, ce qui ne sera pas renvoyé si vous récupérez directement ces objets à partir de DB ou d'un autre stockage persistant.

Mais dans votre cas, il semble que la différence ne sera pas remarquée, car vous ne passez que des chaînes. Vous pouvez donc passer vos données via l'intention et enregistrer des ressources pour l'ouverture/fermeture de la base de données.

Ce n'est pas le postulat cependant, donc tous les commentaires seraient appréciés.

Questions connexes