2010-12-12 4 views
0

J'ai une activité qui exécute une série d'insertions SQLite comme dernier acte avant de démarrer une autre activité qui repose sur les données insérées.Android AsyncTask - Début Suivant Activit de onPostExecute - Mauvaise idée?

Je viens de déplacer tout le contenu db dans une AsyncTask ... et, oui, vous l'avez deviné, la nouvelle activité est appelée avant que les insertions précédentes ne soient terminées.

Maintenant, je suis satisfait de la vitesse de mes opérations db, mais, comment faire pour que mon application attende la fin de la tâche Async avant de commencer l'activité suivante? Je pensais à le démarrer fromonPostExecute, mais cela me semble faux, bien que je ne sais pas pourquoi ce serait si c'est le cas.

tout ce que je actuellement l'intention de le faire dans le pré/postExecute est afficher une boîte de dialogue par défaut ... mais, c'est évidemment aussi défaut parce que la prochaine activité commence dès que le AsyncTask commence :)

Pas besoin de AsyncTask utilisation ici, ou est-il juste un moyen simple de dire "woah, garçon, attendez une seconde!"? :)

Répondre

1

Il est OK de lancer l'autre activité sur onPostExecute ... en fait, cela semble raisonnable dans votre cas.

+0

Merci pour la réponse. Est-ce que c'est toujours utile pour moi d'utiliser AsyncTask dans ce cas, où les inserts sont vraiment la seule chose qui se passe, la seule chose que j'attends? Y at-il un potentiel d'augmentation de la vitesse, juste parce que je retire le travail du fil de l'interface utilisateur? – JimBadger

+0

Si c'est la seule chose que vous faites: utilisez AsyncTask si l'insertion des lignes prend beaucoup de temps, sinon vous n'en avez pas besoin. L'idée de retirer le travail du thread de l'interface utilisateur est que vous pouvez exécuter des tâches qui durent plus de 2 secondes, de sorte que l'utilisateur ne sent pas que votre application est gelée. – Cristian

+0

Merci pour votre aide. Entre ceci et rendre mes affaires de SQLite transactionnelles, j'ai une opération de 9 secondes à moins de 1 seconde. Assez incroyable, vraiment. – JimBadger

Questions connexes