请帮助....
我正在调用一个返回大型soap对象的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){}
我感谢任何帮助。 最好的祝福, 莱昂纳多
答案 0 :(得分:1)
android设备的堆大小非常小(约16MB),因此如果您的SOAP响应返回大量数据,则读取所有这些数据并将其转换为soap对象可能会导致设备丢失内存错误。
我遇到了类似的问题,最简单的方法是执行以下操作
这就是我解决问题的方法 - Very large SOAP response - Android- out of memory error
答案 1 :(得分:0)
如果获得大量数据,最好的方法是使用线程。 使用带有进度对话框的线程,这对于不必等待并看到应用程序“冻结”的用户来说会更友好。
示例(只是为了告诉你我的意思,你必须按照你想要的方式使用它):
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){}
}
祝你好运!