C'est une question vraiment étrange, et je ne peux pas pour la vie de moi comprendre ce qui ne va pas.La variable agit différemment selon la position du point d'arrêt
j'ai deux tableaux de chaînes, déclarées dans la partie supérieure de la classe:
String[] artistsURLIndexArray;
String[] artistsOnlyArray;
Ils sont tous les deux mis à jour dans un fil séparé (travailleur d'arrière-plan) qui est exécuté dans le procédé onCreate. Je vois dans le débogage que tout fonctionne, et les tableaux sont correctement mis à jour.
Après le fil de fond, j'ai le code suivant (toujours dans la méthode onCreate):
String[] test;
if(artistsOnlyArray == null) // point A
{
test = new String[] { "empty...", "asd" }; // point B
}
else
{
test = new String[] { "not empty!", "asd" }; // point C
}
Maintenant, quand je viens 'run' l'application (pas debug), test[0]
est « vide ... ". Autrement dit, le artistsOnlyArray
est nul! Cela ne devrait pas être le cas. (Btw, je teste le tableau test
visuellement avec un listview.)
Si je vais de l'avant et placez un point d'arrêt au point B et je débogue l'application, l'application s'arrête ici. Ceci est attendu bien sûr, vu qu'il prétend que le artistsOnlyArray
est nul.
Si je place un point d'arrêt au point C à la place, le point d'arrêt n'est pas atteint. Correcte aussi'.
Si je place un point d'arrêt au point A, cependant, tout change. Le point d'arrêt est atteint bien sûr, et maintenant il doit vérifier si le tableau est nul. Je presse F8 pour reprendre (j'utilise Eclipse), et soudain, test[0]
est "pas vide!". Je peux également voir que le artistsOnlyArray
est correct (pas nul).
Pourquoi l'apparence (et la position) d'un point d'arrêt est-elle à l'origine de ce comportement?
Il semble que votre thread d'arrière-plan soit en cours d'exécution avant ou après le code oncreate en fonction du point d'arrêt. Normalement, le nouveau thread ne démarrera pas tant que votre thread ne produira pas. Le débogueur provoque le rendement de votre thread principal et donne donc au thread une chance de s'exécuter. – BitBank