2011-04-03 84 views
0

我構建了一個需要輪詢Web服務器的應用程序。現在我創建一個請求服務器的遞歸方法,當響應返回時,它會重新開始,我可能會在稍後進入休眠狀態。Android處理很多HTTP請求

現在,因爲我需要這個密集的請求輪詢。我想優化實際的代碼,儘可能減少每個請求的工作量。

我想我可以創建一個HttpGet(request)和DefaultHttpClient onces,並重復使用這些實例。 請參閱http://pastebin.com/qa7k7uEY

問題是即時接收OutOfMemory錯誤後,像20個請求。

在這裏看到的錯誤日誌http://pastebin.com/58Dhh7L4

是否有處理這種許多要求一個更好的辦法?

回答

2

將問題發佈到問題本身可能更好。

這就是說,問題是你的任何請求都不能被垃圾收集,因爲它們都沒有超出範圍;您不斷地向上調用調用堆棧,而不退出poll方法。

你應該使用某種延遲機制,它可以讓你退出你的方法,同時還要安排一些工作。像這樣的東西應該就足夠了:

new Handler().post(new Runnable() { 
    @Override 
    public void run() { 
     poll(); 
    } 
}); 
+0

嗨馬修,這是有道理的!非常感謝! – 2011-04-03 08:21:25