Tôi có một ứng dụng mà tôi cần tải xuống một lượng lớn dữ liệu qua cuộc gọi SOAP tới dịch vụ web vào ứng dụng khi nó được chạy lần đầu tiên. Câu trả lời sau đó được gửi đến một hàm chuyển đổi XML và lưu trữ dữ liệu trong một tệp tin db.Phản hồi SOAP rất lớn - Lỗi Android hết bộ nhớ
Dữ liệu có kích thước lớn hơn 16MB và tôi có một java.lang.OutOfMemoryError mỗi lần.
Sửa đổi dịch vụ web để cung cấp lượng dữ liệu nhỏ hơn không phải là một tùy chọn.
Có cách nào để có thể tải xuống dữ liệu lớn không? Một cái gì đó giống như một InputStream có lẽ?
Đây là mã của tôi
public Protocol[] getProtocols() {
String METHOD_NAME = "GetProtocols";
String SOAP_ACTION = "urn:protocolpedia#GetProtocols";
Log.d("service", "getProtocols");
SoapObject response = invokeMethod(METHOD_NAME, SOAP_ACTION);
return retrieveProtocolsFromSoap(response);
}
private SoapObject invokeMethod(String methodName, String soapAction) {
Log.d(TAG, "invokeMethod");
SoapObject request = GetSoapObject(methodName);
SoapSerializationEnvelope envelope = getEnvelope(request);
return makeCall(envelope, methodName, soapAction);
}
bất cứ ai có thể đề xuất những gì nên được thực hiện trong trường hợp này?
Trân trọng cảm ơn Mukul
tôi nghĩ rằng vtd-xml chắc chắn có thể giúp giảm mức sử dụng bộ nhớ. –
@ vtd-xml-author - nó cũng hoạt động cho android? –