每当我在我的应用程序中开始一项新活动(即使是一个普通的、空的活动)时,我都会看到一个相对较大的延迟(1 到 2 秒)。检查 LogCat 我看到了这个:
// This is a transition from CurrentActivity to NewActivity
03-01 14:59:00.195: I/ActivityManager(515): START {act=android.intent.action.GET_CONTENT ...} from pid 9382
03-01 14:59:00.242: D/NewActivity(9382): Intent started
03-01 14:59:00.242: D/CurrentActivity(9382): Activity.onPause
03-01 14:59:00.359: D/dalvikvm(515): GC_CONCURRENT freed 824K, 20% free 10419K/12871K, paused 2ms+12ms
03-01 14:59:00.476: I/cat(416): <4>[22335.131317] CPU1: Booted secondary processor
03-01 14:59:00.476: I/cat(416): <6>[22335.138885] Switched to NOHz mode on CPU #1
03-01 14:59:00.742: W/ActivityManager(515): Activity pause timeout for ActivityRecord{4131c158 CURRENT-ACTIVITY}
03-01 14:59:01.179: D/dalvikvm(9382): GC_CONCURRENT freed 1562K, 68% free 10961K/33415K, paused 2ms+6ms
03-01 14:59:01.937: D/NewActivity(9382): NewActivity.onCreate
请注意,一切正常,没有崩溃,只是这个奇怪的延迟。如果我将活动中的代码放在 a 中DialogFragment
并显示对话框,它几乎是即时的。只有当代码在单独的 Activity 中运行时才会出现这种延迟。里面运行的代码CurrentActivity.onPause
是最小的,不负责延迟。
补充:以上是在 android 下运行时API14
。不同设备上的 Android 2.2 (API) 显示相同的延迟,但略有不同LogCat
:
I/ActivityManager(2473): Starting activity: Intent { act=android.intent.action.GET_CONTENT cmp=NewActivity }
03-01 15:08:06.537: D/Editor(4591): Activity.onSaveInstanceState
03-01 15:08:06.537: D/Editor(4591): Activity.onPause
03-01 15:08:06.595: V/InputDevice(2473): ID[0]=0(0) Up(1=>0)
03-01 15:08:07.033: W/ActivityManager(2473): Activity pause timeout for HistoryRecord{CurrentActivity}
03-01 15:08:07.873: D/dalvikvm(4591): GC_FOR_MALLOC freed 5867 objects / 421464 bytes in 33ms
03-01 15:08:08.720: D/NewActivity(4591): NewActivity.onCreate
这就是我创建和启动 NewActivity 的方式: Intent intent = new Intent(this, ImagePickerActivity.class); 意图.setAction(意图.ACTION_GET_CONTENT);startActivityForResult(意图,ACTIVITY_RESULT_ADD_IMAGE);
CurrentActivity 太大而无法发布。
知道是什么原因造成的以及如何预防吗?
提前致谢,