2014-02-18 75 views
1

我创建了一个后台服务,如果有任何新数据,每秒都必须向服务器请求。使用调试监视器,我注意到分配的内存正在增长并增长,直到它说内存泄漏。Android Ti.Network.createHTTPClient内存泄漏

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(),它没有得到干净的错也许是我做的事情错误。 任何人都可以建议,如何避免这种内存泄漏?

回答

0

请求超时时间为5秒,循环时间为1秒......所以很明显,它会发送太多的呼叫,而不管响应与否。即使是在5秒之前。所以最好保持调用的轨道并手动释放xhr变量。 或者您可以通过递归的方式以另一种方式进行,也就是说当您收到第一个呼叫的响应等时再​​次发送呼叫。