如何解决调用Web服务时,Android应用中的OutOfMemoryError
| 请帮忙.... 我正在调用一个返回大肥皂对象的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){}
}
祝好运!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。