2011-03-13 7 views
1

Dans mon application, je dois réduire le temps d'insertion de vidéos et d'autres détails de la base de données. J'essaie d'utiliser le concept AsyncTask dans mon application. Mais cela donne une erreur dans ma partie insertion quand je le fais dans doInBackground(). Une autre classe fait l'insertion.Mise en œuvre AsyncTask

abc.insert (arguments); où abc est l'objet de ma classe de base de données.

L'erreur affichée est nullpointerexception dans ma classe où l'insertion est terminée.

Y at-il une solution pour cela?

grâce,

niki

+1

Un code pourrait vraiment vous aider à obtenir une meilleure réponse. – ninjasense

Répondre

0

Je ne comprends pas bien votre cas, mais il semble que vous êtes victime d'un problème de synchronisation - plusieurs threads appellent votre code d'insertion.

Si tel est le cas, une solution de Simle est d'utiliser instruction Java synchronized autour de votre code d'insertion, par exemple:

public synchronized void insert() { /* code to insert */ } 

ou

private Object lock = new Object(); // a field of your DBHelper 

// somewhere below in your DBHelper 
synchronized (lock) { 
    /* code to insert */ 
} 
+0

Dans mon cas, les threads ne sont pas appelés .. – Niki

+0

Ensuite, nous ne pouvons pas deviner - s'il vous plaît partager à la fois le code et la sortie LogCat. –

0

Si vous cherchez simplement à ajouter des données à votre base de données dans un thread de travail sans ajout de mise à jour de l'interface utilisateur, puis utilisez les threads Java instanciés de AsynTask.

Le seul objectif d'AsyncTask est d'effectuer les opérations coûteuses en arrière-plan et de mettre à jour l'interface utilisateur après l'opération.

Comme suggéré par Arhimed le verrouillage de la base de données peut être un problème dans votre cas si vous avez déclenché plusieurs AsyncTasks.