官方地址:
https://developer.android.com/topic/performance/vitals/launch-time?hl=zh-cn
TTID說點(diǎn)人能聽懂的話,就是我們用Displayed過濾顯示的是應(yīng)用界面顯示的第一幀所用的時(shí)間,所以這個(gè)時(shí)間的話其它用戶正常是沒辦法交互的。

image.png

image.png
為什么使用TTFD
場(chǎng)景是這樣的:你的設(shè)備是智慧屏,通過語音喚起設(shè)備通過App的launcherActivity跳轉(zhuǎn)到指頁面,比如語音: xxx管家,我要想中央電視臺(tái)
這個(gè)時(shí)間設(shè)備會(huì)跳轉(zhuǎn)到直播頁面,我想要知道從語音喚起到直播播放用了多長(zhǎng)時(shí)間,
這個(gè)時(shí)間我們可以在 視頻第一幀渲染完成基本上就可以調(diào)用下面代碼了 reportFullyDrawn()
//示例代碼:
player.setOnRenderListener{
fistRenderCallBack->{
actInstance.reportFullyDrawn()
}
}

image.png
上面這張圖是什么意思,說點(diǎn)人話能聽懂的:
兩種情況:
1、如果你能確定在哪個(gè)耗時(shí)任務(wù)完成時(shí),來統(tǒng)計(jì) TTFD的話,那你在任任務(wù)完成回調(diào)里直接調(diào)用方法
//示例代碼:
actInstance.reportFullyDrawn()
2、如果多個(gè)任務(wù),下面是示例代碼
onCreate(savedInstanceState: Bundle?){
setContentView(R.layout.xx)
fullyDrawnReporter.addOnReportDrawnListener {
//耗時(shí)任務(wù)完可以更新ui了
// 因?yàn)槭遣l(fā)異步所以耗時(shí)應(yīng)該是 4000多ms
}
//任務(wù)1
lifecycleScope.launch {
fullyDrawnReporter.addReporter()
delay(3000)//模擬耗時(shí)任務(wù)
fullyDrawnReporter.removeReporter()
}
//任務(wù)2
lifecycleScope.launch {
fullyDrawnReporter.addReporter()
delay(4000)//模擬耗時(shí)任務(wù)
fullyDrawnReporter.removeReporter()
}
}
過濾:

image.png

image.png