2012-04-25 77 views
0

我已經能夠在新線程中調用http post過程,但通過該帖子發送的變量根據運行此線程之前設置的另一個變量posttype的值而變化。Android SDK。在新的線程中訪問舊變量

,決定在博文被設置爲哪些值發送變量:新線程運行posttype被置位爲「裝載」或「卸載」之前public String posttype = "load";

。根據這些值,確定發送的數據。

我使用新的線程函數是從:http://android-developers.blogspot.com/2009/05/painless-threading.html

我使用從上述鏈接的可運行中所示的第二功能。

在第一個run()裏面我通過http發送了變量。在第二個run()裏面解析返回的變量。

問題是這樣的:我無法訪問posttype的值,因此if語句無法訪問變量posttype,所以總是選擇新線程函數中的else語句。

如何使變量posttype真正全球化或由新線程使用?

謝謝,

+1

不要嘗試通過像這樣的全局變量與線程進行通信。可能發生的最好的事情是,它顯然每次都失敗。最糟糕的是,似乎工作,你交付它。 – 2012-04-25 15:30:03

回答

1

如果我得到它的權利,你不能訪問該變量,因爲它不是最終的。如果是這樣,你可以採用與posttype相同類型的最終變量,爲其賦值並在第二次運行中使用它。 爲了更清楚地檢查我對這個問題的回答:final variable issue in an inner class

在這種情況下的偵聽器運行在適用相同邏輯的情況下。

+0

難道它更簡單!謝謝。對於其他人,我所做的唯一修改是在新線程的'run()'語句中添加'final String posttype2 = posttype;'INSIDE。新線程的'if'語句能夠正確讀取posttype2(間接posttype),因爲posttype2在每次線程運行時都設置爲posttype。 – 2012-04-25 15:49:43