记录Activity启动时间工具StallBuster

StallBuster

为了方便的进行秒开优化,我做了个工具叫StallBuster来协助定位Activity秒开失败的原因。

集成StallBuster非常简单,只需要两步就可以了

  1. 添加对StallBuster的依赖
dependencies {
    compile 'com.github.zhangjianli:stallbuster:1.1'
}

  1. 在你的App的Application中添加以下代码
public class YourApplication extends Application {
    @Override
    public void onCreate() {
        StallBuster.getInstance().init(this);
        super.onCreate();
    }
}

这样就可以了,编译运行你的App。在你的App中打开新的Activity,StallBuster会发出一个Notification。告诉你刚启动这个Activity花了多少毫秒


记录Activity启动时间工具StallBuster_第1张图片

notification

点击这个Notification就会打开StallBuster的历史记录页面。

记录Activity启动时间工具StallBuster_第2张图片

records
这个页面按照时间顺序列出了你的App启动每个Activity的历史记录。每条记录最左边是启动所花费的时间。绿色代表所费时间符合秒开要求;红色代表时间太长。需要关注。右边是这条记录对应的Activity名称。点击某条记录就会进入详情页。

记录Activity启动时间工具StallBuster_第3张图片

详情页

在详情页里你可以看到启动这个Activity的过程中主线程处理过的消息。上方的复选框可以过滤执行时间比较短的消息,方便定位问题。

对于每条记录,首先显示的是这条消息开始被处理的时间戳。然后是cost字段,表示处理这条消息花了多长时间。正常情况下是字体是黑色的;如果处理时间过长,则显示为红色。表明这里可能是我们需要优化的地方。

接下来是target字段,对应的是这个消息是被哪个Handler处理的。Android系统的Handler会显示为黑色;App自己的Handler会显示为红色,表明这个消息不应该在启动Activity的时候出现,这里也可能是需要优化的地方。

例如上图中第一条记录,.MainActivity$StallHandler处理这个消息花费了142ms。这会使启动SubActivity的时间至少延长了142ms。而这个Handler是App自己的Handler。我们需要调试代码使得在启动这个Activity的时候确保不会有来自这个Handler的消息,142ms的时间就会节省下来。

最后一个字段是message或者callback。对应的是Message中的what或callback。有了这些信息我们就能很方便的定位主线程中影响秒开的消息,进而优化我们的App。

你可能感兴趣的:(记录Activity启动时间工具StallBuster)