AsyncTask et OutOfMemoryError: vrai problème ou question de méthode?
Hello, :)
Je reprends le dév sous Android que je n'ai plus touché depuis un moment, et j'ai un problème "mémoire" (OutOfMemoryError)! :weird:
LA question étant de savoir, si c'est un problème de méthode de ma part (pas impossible), ou un vrai soucis de dév... ;)
Le but:
-> parser 2 pages d'un fichier PDF, en 2 fois, car un paramètre de recherche & la page de lecture du PDF diffèrent entre la lecture n°1 et la n°2
-> et récupération des data dans un buffer, pour analyse
Ma méthode:
-> j'ai donc la fonction associée à mon bouton, qui se résume à appeler 2 fois mon AsyncTask, chaque fois avec les bons paramètres
-> les 2 appels fonctionnent très bien en solo, soit l'une,soit l'autre
-> MAIS les 2 ensemble = crash
-> PIRE (et c'est là qu'il y a peut être finalement un problème de méthode...), quand je trace les appels
- d'abord l'appel n°2 se lance d'abord, avant le 1er (après tout pourquoi pas)
- mais en plus, j'ai les mêmes paramètres (sens, par exemple, alors qu'il vaut bien 1 et 2) lors des 2 appels(????) :weird:
- alors qu'évidement, je lance bien mon AsyncTask avec des param différents pour les 2 appels
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| public void update_pdf (View view)
{
Bundle params = new Bundle();
params.putInt("pageDebut", 1); params.putInt("pageFin", 1); params.putInt("sens", 1); params.putString("arret", "Gare");
new AsyncTraiterPdf().execute(params);
params.clear();
params.putInt("pageDebut", 3); params.putInt("pageFin", 3); params.putInt("sens", 2); params.putString("arret", "Centre");
new AsyncTraiterPdf().execute(params);
} |
Les questions:
-> (1) est-ce-que ça pose vraiment un problème de ressources d'appeler 2 fois (ou plus) 1 AsyncTask? :weird:
(ce qui me semblait plus lisible/propre puisque c'est bien le même objet qui lit le fichier, au final!)
-> (2) comment expliquer que les traces d'exécution montrent 2 fois les mêmes paramètres, alors qu'ils changent bien entre les 2 appels?
-> (3) est-ce-que je devrais plutôt n'appeler qu'une seule fois mon AsyncTAsk, en y faisant directement mes 2 traitements différents?
-> (4) est-ce-qu'un thread serait plus indiqué? quelles différences en fait, comment choisir entre les deux finalement?
Questions peut être connes pour les experts que vous êtes :yaisse3:, mais j'avoue sécher......... :calim2:
Sinon, je ne serais pas là! :mouarf: