亚洲欧美在线视频_欧美日韩国产影片_又紧又大又爽精品一区二区_欧美精品一区二区三区一线天视频 _视频一区视频二区中文字幕_久久99在线观看_欧美日韩dvd在线观看_亚洲一区二区三区三_国产高清亚洲一区_精品无人区卡一卡二卡三乱码免费卡_九一久久久久久_91老司机福利 在线_欧美一区二区三区视频免费_3d成人h动漫网站入口_欧美在线不卡一区_国产成人免费视频一区

登錄
首頁 > 別克 > 探索淘寶購物車SurfaceView閃黑的解決方案

探索淘寶購物車SurfaceView閃黑的解決方案

發布時間:2025-02-15 16:38:55 發布用戶: 15210273549

如何應對產品形態與產品節奏相對確定情況下轉變為『在業務需求與產品形態高度不確定性的情況下,如何實現業務交付時間與交付質量的確定性』。我們希望通過混合架構(Native 業務容器 + Weex 2.0)作為未來交易終端架構的重要演進方向,在 Native 容器側充分發揮原生語言的性能優勢、常駐 App 的調控與管控能力、手勢識別與交互優勢來解決體驗問題。本專題《淘寶交易終端架構探索》是我們摸索出的部分實踐總結,歡迎大家一起交流進步。

 

第一篇:《Weex購物車長列表橫滑操作優化“編年史”》

第二篇:《淘寶頁面首幀優化的經驗和心得》

第三篇:《淘寶App交易鏈路終端混合場景體驗探索》

第四篇:《淘寶訂單列表

Fragment轉場動畫卡頓解決方案

第五篇:《探索淘寶購物車SurfaceView閃黑的解決方案》(本篇)

 


引言

 

購物車的技術架構一直是DX+Native,在業務快速迭代的今天,可能不滿足迭代效率,需要探索一種性能佳+迭代快的方式,由此開始探索購物車Weex化。

在進入主TabWeex購物車(SurfaceView)之后,我們發現切換到其他Tab(如:首頁),再回到購物車,兩次切換都能看到明顯的閃黑。

 

,時長00:09


SurfaceView閃黑的原理是什么?

 

SurfaceView繼承自 View 類,但與普通的 View 不同,它內部使用了一個獨立的繪圖表面(即 Surface),這個 Surface 可以在主 UI 線程之外的線程上進行控制和繪制。這樣做的好處是,即使繪制操作很復雜,也不會影響到 UI 線程的響應性和流暢性。

 

View視圖位于自繪視圖Render Surface下方,通過對自繪視圖的Render Surface挖洞來透出下面的View視圖。

 

Tab切換頁面的原理是FragmentManager的attach和detach,會觸發Fragment根布局的add/remove,最終導致SurfaceView從View樹上添加/移除,進而影響SurfaceView的可見性。

 

閃黑問題本質上是:SurfaceView的可見性發生變化時,會導致其內部的Surface被銷毀/重建。在沒有內容呈現的情況下,SurfaceView顯示為黑色。

 

什么時候SurfaceView可見性會變化?

SurfaceView被removeView,如:主Tab切換
Activity前后臺切換,如:打開詳情/回到手機Home
Activity銷毀,如:finish頁面

DX+Native購物車Tab切換為什么沒有閃的問題呢?

DX采用原生View繪制,Fragment頁面切換受VSync信號和MessageQueue的同步屏障控制,確保在執行完performTraversals()(即View的測量、布局和繪制三大流程)之后,才進行下一步操作,這樣可以保證UI的一致性。


方案

 

由于SurfaceView的特性,可見性變化的時候,就可能導致黑屏。業內有幾種解決辦法:

頁面切換不執行remove SurfaceView,只執行visible/gone
蓋View,遮住黑屏
Texture/Image->Surface切換


?Fragment不銷毀


概述
主Tab頁面切換,由FragmentManager的attach/detach改為show/hide,避免SurfaceView可見性變化

 

效果
Tab切換不會閃。

 

,時長00:07

 

方案細節

修改Fragment切換方式:從attach/detach改為show/hide

 

show/hide不會觸發購物車Fragment的生命周期回調,SurfaceView也不會從view樹中移除,因此切換不會閃。

 

回到主Tab的場景,如果采用
FragmentManagerattach/detach,會觸發Fragment生命周期回調(onDestroyView),內部會把SurfaceView從view樹上移除,從而觸發onWindowVisibilityChanged,最終導致Surface被destroy,而調用show/hide并不會觸發onWindowVisibilityChanged,所以不會導致Surface銷毀。

 

?截屏


概述
從購物車切換到其他Tab時,保存購物車的截屏,再次從其他Tab進入購物車的時候,先顯示截屏View,待SurfaceView開始渲染之后,再隱藏截屏View,顯示SurfaceView。

 

效果
Tab切換不會閃,但截屏有API系統版本限制(Android 8.0,API 26)

 

,時長00:07

 

方案細節
核心:SurfaceView從View樹中移除,內部會銷毀當次Surface,所以要想成功截屏必須在這個銷毀動作執行之前。
截屏:在Tab切換Preload階段/back鍵觸發時截圖,期間會卡主主線程(設置超時,如:100ms),在截屏完成之后(顯示截屏兜底圖),再切換Fragment
購物車切到其他Tab,Nav Preload階段截圖并顯示兜底圖
// 切換到非購物車Tab回調
private val mTabOtherCallback: ()-> Unit = {
    screenShot()
}


// back鍵返回首頁
override fun onBackPress(): Boolean {
    screenShot()
    return false
}


// 偽代碼
private val screenShot() {
    val bitmap = requestBitmap()
    // 添加視圖bitmap
    mScreenImageView?.setImageBitmap(bitMap)
    mScreenImageView?.setBackgroundColor(if (isSuccess) Color.TRANSPARENT else Color.WHITE)
    mScreenImageView?.visibility = View.VISIBLE
}

回到購物車,weex視圖開始繪制,移除兜底圖
override fun onWeexUiDisplayed() {
    if (mScreenImageView?.visibility == View.VISIBLE) {
        mScreenImageView?.visibility = View.GONE
    }
}
3. PixelCopy.request存在版本問題,只能在android 8.0及以上版本生效

 

api限制問題

由于PixelCopy.request截圖存在系統版本限制,因此針對低于android8.0版本(如:Y67),做如下處理:

上述方案中購物車切換到其他Tab的時候,由顯示截圖改為顯示白色背景圖
顯示和隱藏兜底圖的時機不變
改動的實質是避免SurfaceView切換帶來的閃黑問題,添加了白色背景圖,從體感上沒有那么的突兀

api限制另一種解決思路

通過Weex提供獲取SurfaceView bitMap方式:

圖片未采樣,內存占用太高
圖片應該用的是ARGB,購物車沒有alpha透明度,可以直接用RGB,內存占用會更小一些
仍然存在耗時問題
列表滾動的時候,切換tab,需要先停止列表,然后再截圖


影響

性能損耗:從購物車切換到其他Tab,會執行PixelCopy.request截圖本身是耗時的,會卡主主線程,有一定的耗時
截圖對內存有輕微影響,但對Java Heap影響不大
如果購物車列表處于滑動/動畫/下拉/上拉等非靜止狀態,切換到其他Tab,再回到購物車,會導致截的圖不是最后一幀,視覺上會導致頁面抖動
Android低系統版本體驗有損,截圖降級為白色背景圖


?Image->Surface轉換


概述
從購物車去到其他Tab,先切換成ImageView,同步渲染完,再跳轉其他Tab;從其他Tab回到購物車,ImageView先上屏,再切換成SurfaceView。

 

效果
其他Tab進入購物車:iv->sv無白幀,很絲滑,購物車切到其他Tab:sv->iv有較多的白幀(待解決,參考了UC Hummer的方案)

Copyright 2017-2024 微學堂 版權所有  京ICP備18049689號-30
亚洲欧美在线视频_欧美日韩国产影片_又紧又大又爽精品一区二区_欧美精品一区二区三区一线天视频 _视频一区视频二区中文字幕_久久99在线观看_欧美日韩dvd在线观看_亚洲一区二区三区三_国产高清亚洲一区_精品无人区卡一卡二卡三乱码免费卡_九一久久久久久_91老司机福利 在线_欧美一区二区三区视频免费_3d成人h动漫网站入口_欧美在线不卡一区_国产成人免费视频一区

        日韩欧美国产小视频| 国产视频一区二区三区四区| 五月综合激情日本mⅴ| 亚洲欧美日本韩国| 亚洲一区二区三区三| 首页国产欧美久久| 久久国产精品99久久人人澡| 国产麻豆一精品一av一免费| 成人免费黄色大片| 国产区日韩欧美| 日韩av在线一区二区三区| 亚洲一区免费看| 欧美日韩成人一区| 欧美成人福利视频| 久久99精品久久久久久青青日本| 国产一区二区三区黄| 人偷久久久久久久偷女厕| 91久久线看在观草草青青| 欧美一区二区在线免费观看| 久久久国际精品| 亚洲人成人一区二区在线观看| 午夜国产不卡在线观看视频| 国产真实乱子伦精品视频| 99re热这里只有精品视频| 蜜桃成人在线| 欧美色视频一区| 日本一区二区三区视频视频| 亚洲成人自拍一区| 国产电影精品久久禁18| 国产aⅴ精品一区二区三区黄| 亚洲a∨一区二区三区| 精品1区2区3区| 亚洲国产精品精华液2区45| 午夜视频在线观看一区二区| 国产精品综合二区| 精品国产免费一区二区三区| 在线观看区一区二| 国产精品免费视频一区| 日本va欧美va瓶| 97久久超碰国产精品电影| 亚洲国产高清国产精品| 精品久久五月天| 欧洲av一区二区嗯嗯嗯啊| 亚洲精品一线二线三线| 亚洲va天堂va国产va久| 99精品欧美一区| 一本到一区二区三区| 国产欧美一区视频| 狠狠狠色丁香婷婷综合激情| 久久精品国产第一区二区三区最新章节 | 中文字幕日韩精品一区| 免费不卡在线视频| 国产一区二区精品免费| 欧美色综合网站| 亚洲色图第一区| 国产69精品久久99不卡| 一区二区不卡在线视频 午夜欧美不卡'| 26uuu欧美| 美女免费视频一区二区| 精品国产免费人成电影在线观...| 欧美精品第1页| 一区二区三区欧美在线| 欧美成人精品二区三区99精品| 亚洲成人第一页| 国产精品一区二区免费看| 51久久夜色精品国产麻豆| 尤物在线观看一区| 91免费版在线看| 在线观看中文字幕不卡| 尤物av一区二区| 94-欧美-setu| 欧美精品1区2区| 蜜桃精品视频在线| 日韩中文字幕一区二区| 国产日韩欧美麻豆| 成人在线视频一区二区| 欧美日韩综合一区| 视频一区免费在线观看| 欧美下载看逼逼| 中文字幕在线不卡国产视频| 成人免费看视频| 欧美少妇一区二区| 日韩av一区二区在线影视| 日韩av不卡在线播放| 国产精品―色哟哟| 91在线观看地址| 日韩一区二区免费在线电影| 久久99热国产| 日本韩国视频一区二区| 无码av中文一区二区三区桃花岛| 免费成人看片网址| 国产精品久久久久影院色老大 | 久久久久免费网| 中文字幕一区在线| 福利视频久久| 国产性做久久久久久| 99久久久免费精品国产一区二区| 91精品国产麻豆国产自产在线| 色婷婷久久久亚洲一区二区三区 | 欧美高清在线视频| 9i看片成人免费高清| 欧美一二三区在线| 国产夫妻精品视频| 日韩一区二区免费电影| 国产99精品国产| 日韩一区二区三区免费观看| 成人一区在线观看| 精品久久久久久久一区二区蜜臀| 成人精品一区二区三区四区| 日韩欧美成人一区二区| 成人av资源在线| 久久久综合视频| 91丨九色丨黑人外教| 精品国产精品网麻豆系列| 99久久亚洲一区二区三区青草| 久久影音资源网| 高清一区二区三区视频| 成人欧美一区二区三区在线播放| 日本在线观看不卡| 午夜激情一区二区| 欧美日韩精品久久久| 国产精品456| 久久久久久久久99精品| 国产欧美在线一区二区| 亚洲精品免费在线| 亚洲欧洲一二三| 韩国在线一区二区| 精品美女在线播放| 国产乱码精品一品二品| 久久久91精品国产一区二区精品 | 亚洲一二三四久久| 在线观看欧美黄色| 成人午夜av在线| 国产精品乱人伦一区二区| 热re99久久精品国99热蜜月| 日韩av一区二区在线影视| 欧美精品粉嫩高潮一区二区| 91免费看`日韩一区二区| 一区二区欧美国产| 国产精品一区久久久久| 欧美mv日韩mv亚洲| 久久另类ts人妖一区二区| 五月天中文字幕一区二区| 欧美亚一区二区| 91亚洲精品乱码久久久久久蜜桃| 亚洲女女做受ⅹxx高潮| 在线精品视频一区二区三四| 成人免费不卡视频| 亚洲色图.com| 欧美日韩高清一区| 国产伦精品一区二区三区照片91| 五月综合激情网| 精品成人a区在线观看| 茄子视频成人在线观看| 精品综合久久久久久8888| 国产情人综合久久777777| 一本色道久久综合亚洲二区三区| 粉嫩av亚洲一区二区图片| 成人欧美一区二区三区在线播放| 欧美日韩在线亚洲一区蜜芽| 国产一区二区三区四区五区加勒比| 婷婷亚洲久悠悠色悠在线播放| 日韩一级高清毛片| 日本视频一区二区在线观看| 国产高清亚洲一区| 一区二区三区美女视频| 日韩一区二区三区观看| 日本公妇乱淫免费视频一区三区| 国产精品456| 亚洲成人777| 亚洲国产精品精华液2区45| 欧美三级电影在线看| 欧美日本亚洲| 99久久综合国产精品| 日本欧美肥老太交大片| 国产精品无圣光一区二区| 欧美日韩在线播放| 青娱乐一区二区| 99国产盗摄| 国产suv一区二区三区88区| 午夜精品久久久久久久99樱桃 | 亚洲精品视频在线观看网站| 欧美喷潮久久久xxxxx| 欧美午夜精品久久久久久蜜| 亚洲电影在线播放| 国产精品每日更新| 欧美成人精精品一区二区频| 91黄色免费版| 日日骚一区二区网站| 成人欧美一区二区三区视频| 国产福利一区二区三区视频在线| 污片在线观看一区二区| 亚洲色图在线看| 国产欧美日韩综合精品一区二区| 欧美一区二区三区啪啪| 91福利社在线观看| 一区二区91美女张开腿让人桶| 久久综合中文色婷婷| 成人欧美一区二区三区视频 | 国产精品乱码视频|