2011-03-10 56 views
2

如何测量ListView/ListActivity渲染列表所需的时间?测量渲染ListView的时间ListView

我有一个ListActivity,需要很长时间才能显示(在旧设备上它是〜3s),我想优化它。

编辑:

我已经有Activity1和Activity2之间的时间。在此期间,Activity2正在做一些事情(初始化)。除此之外,它呈现其列表。我想花点时间来完成这个列表。如果活动之间的总时间为3秒,我想知道渲染列表是否需要2.9秒或0.5秒....

回答

3

您可以简单地输出时间。例如,你可以使用logcat

final long t0 = System.currentTimeMillis(); 

// code to measure 

Log.w(TAG, "TEXT" + System.currentTimeMillis()-t0); 

当然,你可以使用任何其他系统的输出像对话框或东西。只需使用你喜欢的。

编辑:

如果你不想在你的代码中使用调试消息,所有的时间,你可以做这样的:

创建一个类中调用设置:

public class Settings { 
public static final boolean DEBUG = true; 
// If you prefer you could do use an enum 
// enum debugLevel {SHOW_EVERYMESSAGE, ERRORS, IMPORTANT_MESSAGES, ...} 
// In your classes you would have to check that DEBUG is less or equal than 
// the debugLevel you want 
} 

在类要使用调试消息仅仅做到这一点

import xxx.yyy.Settings 

class foo { 
    final static boolean DEBUG = Settings.DEBUG; 
    if(DEBUG){ 
    // Debug messages 
    } 
} 

现在,如果您要禁用DEBUG消息,您可以在Settings类中简单设置DEBUG = false

如果您想要在两个活动之间进行测量,您可以使用intent并将t0发送给另一个活动以计算时间。当然,您可以在if(DEBUG){ /* code */ }声明中包含此内容,以免发送最终版本中的意图。 if语句不应该太大地增加代码的计算。

+0

是的,但在什么时候?有没有像onStartRender/onStoprender? – zorglub76 2011-03-10 09:26:26

+0

我在之前的onPause和ListActivity的onResume之间存在差距。我不会把调试线放在适配器的getView中... – zorglub76 2011-03-10 09:32:39

+0

使用意图在两个活动之间发送t0。或使用我编辑的解决方案。有了这个,您几乎可以在释放代码之前删除调试消息,而无需太多麻烦。 – Darokthar 2011-03-10 11:07:39