0

在我的默认视图中,我有:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Debug.startMethodTracing(Environment.getExternalStorageDirectory()+"/PosLogistics.trace", 1000000000);

并在这里停下来:

protected void onStop()
    {
        super.onStop();
        Debug.stopMethodTracing();
    }

安卓目标是2.2。在 Motorolla 2.3 上运行时,我可以跟踪 900 毫秒。在 Samsung Galaxy (4.0) 和 Sony Xperia (4.0) 上运行时,应用程序在启动时会立即关闭。logcat 的最后一个条目是

02-15 05:25:19.940: I/dalvikvm(8740): TRACE STARTED: '/mnt/sdcard/PosLogistics.trace' 976562KB

根据这个线程:Traceview 最大记录时间?跟踪受设备 RAM 限制。可以解释摩托罗拉 900 毫秒,但 Galaxy 和 Xperia 有什么问题?

4

1 回答 1

2

您正在尝试1000000000为跟踪缓冲区分配字节~ 1GB。我认为任何系统都不会允许您这样做。它适用于内存缓冲区大小,而不适用于磁盘。

请参见vm/Profile.cpp第 383 行。

state->buf = (u1*) malloc(bufferSize);

跳过给出缓冲区大小。这将默认为 8MB,应该足以满足您的需求。

于 2013-03-01T13:26:37.253 回答