2014-07-17 25 views
0

我上課喜歡這個不尋常的行爲(其實onResponse方法解析JSON,但我刪除了那件OD代碼爲簡單起見):的Java變量

class DistRespListener implements HttpClient.HttpResponseListener { 

private double dist; 

@Override 
public void onResponse(HttpMetaResponse response) { 
    Double distTemp = 14.7; 
    setDist(distTemp); 
    Log.d("distanceInner2", String.valueOf(this.dist)); 
} 

public void setDist(double dist) { 
    this.dist = dist; 
    Log.d("distanceInner4", String.valueOf(this.dist)); 
} 
public double getDist() { 
    Log.d("distanceInner3", String.valueOf(this.dist)); 
    return this.dist; 
} 

稍後在代碼中,我有這樣的:對象的HttpClient的

HttpClient httpClient = new HttpClient(); 
DistRespListener distRespListener = new DistRespListener(); 
httpClient.executeRequestUsingOwnListener(new HttpGet(builder.build().toString()), distRespListener); 

Log.d("distanceOuter", String.valueOf(distRespListener.getDist())); 

方法executeRequestUsingOwnListener調用distRespListener對象的方法onResponse()。

問題是,getDist()方法總是返回「0.0」。

+0

是不是要求完成異步? – Simon

+0

您在此之前設置了dist,對嗎? –

+0

@Simon是的,是的。 onResponse()在onPostExecute()中調用 – user3199693

回答

0

檢查日誌消息出現的順序 - 它將是distanceinner3,distanceouter,distanceinner2和distanceinner4。這告訴我們前兩個值是在收到響應之前記錄的,而後兩者是在登錄後記錄的。這就是爲什麼你前兩個總是看到0的原因。