问题描述
|
请帮忙....
我正在调用一个返回大肥皂对象的Web服务方法,并且得到了
OutOfMemoryException
。
我该如何避免呢?有没有办法做到这一点?
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
envelope.setoutputSoapObject(request);
try {
httpTransport.call(SOAP_ACTION,envelope);// Here I am getting error
}
catch(Exception e){}
感谢您的帮助。
最好的祝福,
列昂纳多
解决方法
android设备的堆非常小(大约16MB),因此,如果您的SOAP响应返回大量数据,则将所有这些数据读取并将其转换为soap对象可能会使您的设备抛出内存不足错误。
我遇到了类似的问题,最简单的方法是执行以下操作
因为你的肥皂反应是
收到,将其另存为XML
磁碟
然后使用XML解析器
从您想要的任何数据
XML(创建对象或存储到
db)
这就是我解决问题的方式-SOAP响应非常大-Android-内存不足错误
, 如果获取大量数据,最好的方法是使用线程。
使用带有进度对话框的线程,这对于无需等待应用程序已“冻结”或类似情况的用户将更加友好。
示例(只是为了向您展示我的意思,您必须按自己的方式使用它):
public class YourActivity extends Activity implements Runnable {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Your code...
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
envelope.setOutputSoapObject(request);
// Running the thread
Thread thread = new Thread(this);
thread.start();
}
@Override
public void run() {
try {
httpTransport.call(SOAP_ACTION,envelope);// Here I am getting error
}
catch(Exception e){}
}
祝好运!