我正在編寫一個簡單的天氣應用程序,以便學習如何針對Android進行編程,但是我已經陷入了僵局。在異步HTTP請求中觸發onSuccess活動
目前,應用程序獲取用戶的GPS位置,然後發送請求到API以獲取天氣信息。問題是,我將這些API調用抽象爲另一個名爲Darksky
的類,它們異步運行。
當我做這樣的事情時,這成爲一個問題:weeklyForecast = darksky.getWeeklyForecast();
。由於請求在getWeeklyForecast()
方法中異步運行,weeklyForecast
將返回爲空,因爲該方法在從API獲得響應之前返回。
這裏有興趣的人是方法:
public ArrayList<Forecast> getWeeklyForecast() {
// Clear before inserting new data
weeklyForecast.clear();
client.get(BASE_URL + API_KEY + "/" + latitude + "," + longitude + "?units=uk&exclude=hourly%2Calerts%2Cflags", null, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(String response) {
try {
JSONObject root = new JSONObject(response);
JSONObject daily = root.getJSONObject("daily");
JSONArray forecasts = daily.getJSONArray("data");
// Loop through every day
for (int i = 0; i < forecasts.length(); i++) {
JSONObject dayObject = forecasts.getJSONObject(i);
weeklyForecast.add(new Forecast(
dayObject.getInt("time"),
dayObject.getString("summary"),
dayObject.getString("icon"),
dayObject.getDouble("temperatureMin"),
dayObject.getDouble("temperatureMax"),
dayObject.getDouble("windSpeed"),
dayObject.getDouble("humidity")
));
}
} catch(Exception e) {
// TODO: handle
}
}
});
return weeklyForecast;
}
如何檢測時,從我的主要活動HTTP請求的onSuccess()
事件觸發?