Android Ti.Network.createHTTPClient内存泄漏

时间:2014-02-18 14:12:06

标签: titanium titanium-mobile

我创建了一个后台服务,如果有任何新数据,每秒都要向服务器询问。使用调试监视器,我注意到分配的内存正在增长和增长,直到它说内存泄漏。

index.js

var intent = Titanium.Android.createServiceIntent({
    url: 'service.js'
  });
intent.putExtra('interval', 1000); // Needs to be milliseconds

Titanium.Android.startService(intent);

service.js

var URL = "localhost:8051";
Ti.API.info("checkForNotification: " + URL );

var xhr = Ti.Network.createHTTPClient({
     onload: function(e) {
             Ti.API.info('onload called, HTTP status = '+this.status); 
      },
     onerror: function(e) {
             Ti.API.info('error, HTTP status = '+this.status); 
     },
     timeout:5000  /* in milliseconds */
});

xhr.open('GET', URL);
xhr.send(); 

到目前为止我所意识到的是xhr.send()的错误,它不会变得干净或者可能是我做错了。 任何人都可以建议,如何避免这种内存泄漏?

1 个答案:

答案 0 :(得分:0)

请求超时为5秒,循环时间为1秒......所以很明显它会发送太多的调用,无论它是否带有响应。即使它在5秒之前到来。因此,最好保持跟踪调用并手动释放xhr变量。 或者您可以通过递归以另一种方式执行此操作,意味着当您收到第一个呼叫的响应时再次发送呼叫,等等。