2011-04-03 185 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