2010-11-26 75 views
3

嘗試使用SAXParser解析大型XML文件時,我的應用程序崩潰。
我在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

有針對Android堆的限制,在閱讀您的文件塊的XML數據,並解析它方便

忍者編輯代碼:

根據Tseng:高速緩存List<DbEntry>通過讀入20-30個條目更有意義。