2010-11-26 4 views
3

Мое приложение разбивается при попытке проанализировать большой XML-файл с помощью SAXParser.
Я нашел вопрос в SO относительно этого here без ответа.
Он работает по назначению, когда я уменьшаю размер XML.
Вот мой вывод LogCat.Android OutOfMemoryError

11-26 12:08:45.099: WARN/dalvikvm(218): threadid=17: thread exiting with uncaught exception (group=0x4001aa28) 
11-26 12:08:45.109: ERROR/AndroidRuntime(218): Uncaught handler: thread Thread-9 exiting due to uncaught exception 
11-26 12:08:45.220: ERROR/AndroidRuntime(218): java.lang.OutOfMemoryError 
11-26 12:08:45.220: ERROR/AndroidRuntime(218):  at java.lang.Object.internalClone(Native Method) 
11-26 12:08:45.220: ERROR/AndroidRuntime(218):  at java.lang.Object.clone(Object.java:82) 
11-26 12:08:45.220: ERROR/AndroidRuntime(218):  at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:141) 
11-26 12:08:45.220: ERROR/AndroidRuntime(218):  at java.lang.StringBuilder.append(StringBuilder.java:282) 
11-26 12:08:45.220: ERROR/AndroidRuntime(218):  at com.google.android.iopex.SaxXMLHandler.characters(SaxXMLHandler.java:24) 
11-26 12:08:45.220: ERROR/AndroidRuntime(218):  at org.apache.harmony.xml.ExpatParser.text(ExpatParser.java:166) 
11-26 12:08:45.220: ERROR/AndroidRuntime(218):  at org.apache.harmony.xml.ExpatParser.append(Native Method) 
11-26 12:08:45.220: ERROR/AndroidRuntime(218):  at org.apache.harmony.xml.ExpatParser.parseFragment(ExpatParser.java:506) 
11-26 12:08:45.220: ERROR/AndroidRuntime(218):  at org.apache.harmony.xml.ExpatParser.parseDocument(ExpatParser.java:467) 
11-26 12:08:45.220: ERROR/AndroidRuntime(218):  at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:329) 
11-26 12:08:45.220: ERROR/AndroidRuntime(218):  at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:286) 
11-26 12:08:45.220: ERROR/AndroidRuntime(218):  at javax.xml.parsers.SAXParser.parse(SAXParser.java:361) 
11-26 12:08:45.220: ERROR/AndroidRuntime(218):  at javax.xml.parsers.SAXParser.parse(SAXParser.java:240) 
11-26 12:08:45.220: ERROR/AndroidRuntime(218):  at com.google.android.iopex.SaxParser.parse(SaxParser.java:22) 
11-26 12:08:45.220: ERROR/AndroidRuntime(218):  at com.google.android.iopex.iOPEXActivity$4.run(iOPEXActivity.java:112) 
11-26 12:08:45.220: ERROR/AndroidRuntime(218):  at java.lang.Thread.run(Thread.java:1060) 

HERE код, который я использую для анализа

+0

Можно ли использовать базу данных SQLite, а не XML-файл для ваших данных? – EboMike 2010-11-26 07:13:43

ответ

1

Есть куча ограничений для андроида, читать данные XML в куски из файла и разобрать его удобно

Ninja редактировать:

Согласно Tseng: Кэширование List<DbEntry> путем считывания 20-30 записей в него имеет смысл.