我有一种奇怪的行为。我的应用程序在首次启动时启动非常快。 第二次启动时(之前关闭应用程序并使用taskmanager检查它不再运行)它运行速度非常慢。第3次快,第4次慢。每一秒开始都很慢。因为我的垃圾收集器第二次开始工作,但我不知道为什么。应用程序的启动是否总是相同?
我的步骤非常慢是我的decodeStream - Statement。我想要加载大约100张小图片(5千字节 - 15千字节)。
Log.v("DEBUG DRAWEVENT 71","load " + e.sEventTitle);
bm = BitmapFactory.decodeStream(new FileInputStream(fImage), null, o2);
Log.v("DEBUG DRAWEVENT 72","end load " + e.sEventTitle);
显示垃圾收集活动的LogCat(仅每2个开始)
01-04 16:16:03.500: V/DEBUG DRAWEVENT 71(20427): load Title
01-04 16:16:03.641: D/dalvikvm(20427): GC_FOR_ALLOC freed 17K, 33% free 28448K/41924K, paused 138ms, total 138ms
01-04 16:16:03.641: I/dalvikvm-heap(20427): Grow heap (frag case) to 27.842MB for 34612-byte allocation
01-04 16:16:03.771: D/dalvikvm(20427): GC_FOR_ALLOC freed 0K, 33% free 28481K/41960K, paused 138ms, total 138ms
01-04 16:16:03.781: V/DEBUG DRAWEVENT 72(20427): end load Title
我在API级别12上。
任何提示?
新的分析事实:首次启动后,App仍然在缓存进程下运行(35MB)。缓存进程可以在settings-> apps-> Running-> Show Cached Processes下显示。 当停止这个过程时,我的第二次开始也会快速运行。
接下来的问题。如何防止应用程序被缓存?