2011-09-08 39 views
1

我有一個Android應用程序,使用JSON與Jersey web服務進行通信。接收到的數據存儲在Android設備上的SQLite數據庫中。Android應用程序暫停 - 緩慢的垃圾回收或SQLite性能問題?

根據DDMS,堆大小約爲6MB,大約2MB可用。但是,在收到一定數量的數據後,應用程序會'暫停'(不會從Web服務請求新數據)。然後我看到垃圾收集被觸發,應用程序繼續。手動觸發System.gc()似乎沒有效果,甚至會降低性能。

我的問題是:垃圾回收是暫停的原因,還是寫入Android設備上的SQLite數據庫比較慢?

更新:Android版是2.3.3

回答

1

寫SQLite數據庫是緩慢的,因爲文件I/O是緩慢的,因爲閃光燈很慢。更具體地說,SQLite事務處理速度很慢,因爲事務將數據寫入閃存,並且閃存很慢。如果您正在快速連續執行多個SQL操作,請考慮將它們包裝在自己的事務中。

除此之外,使用Traceview來確定你的時間花在哪裏。

+0

優秀的答案!我將修改代碼以使用事務,之後我會看看traceview。 –