代码之家  ›  专栏  ›  技术社区  ›  Konstantin Berkov

Android systrace不显示我的应用程序的自定义部分

  •  0
  • Konstantin Berkov  · 技术社区  · 7 年前

    使用systrace在RecyclerView中滚动时尝试分析滞后:

    python systrace.py -o ~/tmp/newtrace.html -app=<my package>
    

    但是没有自定义跟踪部分的条目。 No entry for my custom sections

    我正在使用以下代码进行跟踪

    override fun onCreateViewHolder(parent: ViewGroup): RecyclerView.ViewHolder {
        trace(sectionName = "GalleryDelegate.onCreateViewHolder") {
            val view = layoutInflater.inflate(R.layout.item_upload, parent, false)
            return ProfileMediaHolder(view, delegate)
        }
    }
    
    override fun onBindViewHolder(items: List<ProfileDataEntry>, position: Int, holder: RecyclerView.ViewHolder, payloads: MutableList<Any>) {
        trace(sectionName = "GalleryDelegate.onBindViewHolder") {
            val item = items[position] as ProfileDataEntry.MediaItem
            val castedHolder = holder as ProfileMediaHolder
            when (item) {
                is ProfileDataEntry.MediaItem.Item -> {
                    castedHolder.bind(item.value)
                }
                is ProfileDataEntry.MediaItem.Placeholder -> {
                    castedHolder.bind(item.type)
                }
            }
        }
    }
    
    0 回复  |  直到 7 年前
        1
  •  2
  •   Vikram    7 年前

    您需要使用以下命令为应用程序启用systrace

    adb shell "setprop debug.atrace.app_number 1" adb shell "setprop debug.atrace.app_0 appname"

    默认情况下,它处于禁用状态。要获得systrace,只需在命令行中指定appname,如下所示。

    python systrace.py -t 4 -a appname -o mynewtrace.html perf sched gfx