這是一個很奇怪的問題,我不能爲了我的生活找出問題所在。根據斷點的位置,變量的作用是不同的
我有兩個字符串數組,在類的頂部聲明:這是在onCreate方法運行
String[] artistsURLIndexArray;
String[] artistsOnlyArray;
他們是在一個單獨的線程(後臺工作)都更新。我在調試中看到一切正常,數組正確更新。
後臺線程我有以下代碼(在onCreate方法仍然)後:
String[] test;
if(artistsOnlyArray == null) // point A
{
test = new String[] { "empty...", "asd" }; // point B
}
else
{
test = new String[] { "not empty!", "asd" }; // point C
}
現在,當我剛剛「跑」的應用程序(沒有調試),test[0]
是「空... 」。也就是說,artistsOnlyArray
是空的!這不應該是這樣。 (順便說一下,我正在用列表視圖測試test
數組。)
如果我繼續前進並在B點放置斷點並調試應用程序,則應用程序在此處停止(休息)。這當然是預料之中的,因爲它聲稱artistsOnlyArray
爲空。
如果我在C點放置一個斷點,而不是達到斷點。也'好'。
但是,如果我在A點放置一個斷點,則一切都會改變。當然,斷點已經到了,現在它必須檢查數組是否爲空。我按F8恢復(我正在使用Eclipse),並且突然,test[0]
是「不是空的!」。我還可以看到artistsOnlyArray
正確(不爲空)。
爲什麼斷點的外觀(和位置)引起這種行爲?
這聽起來像你的後臺線程或者在oncreate代碼之前或之後運行,取決於斷點。通常情況下,新的線程不會開始,直到你的線程產量。調試器正在導致你的主線程產生並因此給新線程一個運行的機會。 – BitBank 2011-12-25 22:18:37