Системная трасса Android не показывает пользовательские разделы моего приложения

Попытка профилировать лаги при прокрутке в RecyclerView с помощью systrace:

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

Но нет записи для пользовательских разделов трассировки. Нет записи для моих пользовательских разделов

Я отслеживаю, используя следующий код

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)
            }
        }
    }
}

person Konstantin Berkov    schedule 09.11.2018    source источник
comment
Так ты нашел решение?   -  person Gary Chen    schedule 27.10.2020


Ответы (1)


Вам нужно включить systrace для вашего приложения, используя эти команды

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

По умолчанию он отключен. А для получения systrace просто укажите имя своего приложения в командной строке, как здесь.

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

person Vikram    schedule 14.06.2019
comment
Какое может быть название приложения? Это полное имя пакета, например «com.google.calendar»? - person Gary Chen; 27.10.2020
comment
@XueQing да. это имя, которое у вас есть в AndroidManifest.xml - person tomoima525; 13.11.2020