亚洲一级免费观看_五十路熟女丰满大屁股_国产高清精品软男同_日本久久久精品视频_中文字幕色呦呦_欧美精品久久96人妻无码_亚洲一二区在线观看_少妇高清精品毛片在线视频_黄色影视在线观看_eeuss中文_午夜探花在线观看_日韩精品在线视频免费观看

登錄
首頁 > 智駕游記 > 探索淘寶購物車SurfaceView閃黑的解決方案

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

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

如何應對產品形態與產品節奏相對確定情況下轉變為『在業務需求與產品形態高度不確定性的情況下,如何實現業務交付時間與交付質量的確定性』。我們希望通過混合架構(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-2025 新車測評網 版權所有  ICP備18049689號-30
亚洲一级免费观看_五十路熟女丰满大屁股_国产高清精品软男同_日本久久久精品视频_中文字幕色呦呦_欧美精品久久96人妻无码_亚洲一二区在线观看_少妇高清精品毛片在线视频_黄色影视在线观看_eeuss中文_午夜探花在线观看_日韩精品在线视频免费观看
日日摸日日碰夜夜爽av| xxxx18hd亚洲hd捆绑| 国产精彩视频一区二区| 少妇熟女一区二区| 亚洲怡红院在线| 男人插女人下面免费视频| 国产精品裸体瑜伽视频| 国产中文字幕乱人伦在线观看| 国产女人18毛片| www.99riav| 国产va亚洲va在线va| 免费国产黄色网址| 免费看国产曰批40分钟| 国产成人无码a区在线观看视频| 欧美一级片免费播放| 日韩欧美亚洲天堂| 欧美aⅴ在线观看| 中文字幕在线导航| 五月天婷婷亚洲| 亚洲第一精品区| 黄色一级大片免费| 丝袜人妻一区二区三区| 久久国产精品视频在线观看| 免费欧美一级视频| 日本va中文字幕| 欧美性受xxxxxx黑人xyx性爽| 亚洲成年人专区| www.国产二区| 国产精品无码一区二区在线| 免费大片在线观看| 国产无色aaa| 亚洲五码在线观看视频| 欧美国产日韩激情| 在线视频日韩一区 | 天堂在线资源视频| 国产一二三区av| 强伦女教师2:伦理在线观看| 免费拍拍拍网站| 一本色道无码道dvd在线观看| 亚洲视频第二页| 粉嫩av一区二区三区天美传媒| 国产精品333| 手机av在线网| 欧美一区二区视频在线播放| 能在线观看的av| 污污网站免费观看| 久久亚洲国产成人精品无码区| 日韩有码免费视频| 精品久久免费观看| 免费av观看网址| 欧美激情国内自拍| 日本网站免费在线观看| 九九热免费在线观看| www.国产在线播放| www.com黄色片| 免费在线观看视频a| 黄色片视频在线| 2019日韩中文字幕mv| 久久久久久久中文| 无限资源日本好片| www.亚洲成人网| 久久精品影视大全| 久久综合久久久久| 中文字幕成人免费视频| 久久久久99精品成人片| 欧美又黄又嫩大片a级| 欧美伦理片在线观看| 国产 日韩 欧美在线| 三级a在线观看| 六月婷婷在线视频| a级黄色小视频| 人妻无码一区二区三区四区| 57pao国产成永久免费视频| aaaaaa亚洲| 久久久久久香蕉| 国产免费黄色一级片| 欧洲美女和动交zoz0z| 亚洲色图偷拍视频| 亚洲天堂一区二区在线观看| 91丝袜超薄交口足| 天堂av手机在线| 日韩最新中文字幕| 91视频 - 88av| 久久99中文字幕| 国产乱子伦农村叉叉叉| 成人小视频在线看| 中文字幕天天干| 九九九久久久久久久| 亚洲熟妇无码av在线播放| www.国产在线播放| 欧美黄色一级片视频| 污污网站在线观看视频| 日本xxx免费| 人妻熟妇乱又伦精品视频| 污污的网站18| 精品国产三级a∨在线| 久久视频这里有精品| 色婷婷综合久久久久中文字幕| av免费看网址| 日韩伦理在线免费观看| 国产xxxxx在线观看| 污网站免费在线| 99久久免费观看| 九九精品久久久| 波多野结衣乳巨码无在线| 亚洲综合激情视频| 久久国产亚洲精品无码| 91小视频在线播放| 国产性xxxx18免费观看视频| 国内精品国产三级国产aⅴ久| 日日橹狠狠爱欧美超碰| 热久久久久久久久| 国产aaa一级片| 久久精品无码中文字幕| 日本中文字幕影院| 亚洲熟妇国产熟妇肥婆| 亚洲高潮无码久久| 日本中文字幕精品—区二区| 国产精品欧美激情在线观看| 国产91视频一区| 欧美一级小视频| 五月天婷婷激情视频| 分分操这里只有精品| 视色,视色影院,视色影库,视色网| 另类小说第一页| 青青草原成人网| 女人扒开屁股爽桶30分钟| 丁香六月激情网| 免费网站在线观看视频| 91成人在线视频观看| 青青在线免费视频| 日韩中文在线字幕| youjizz.com在线观看| 青青草视频国产| www.av91| 激情六月丁香婷婷| 噼里啪啦国语在线观看免费版高清版| 欧美成人xxxxx| 国产91对白刺激露脸在线观看| 青青在线免费观看| www.国产视频.com| 性久久久久久久久久久久久久| jizz大全欧美jizzcom| 亚洲综合婷婷久久| 男人j进女人j| 国产人妻777人伦精品hd| 国产精品99久久免费黑人人妻| 午夜精品久久久内射近拍高清| 性欧美videossex精品| 亚洲视频在线不卡| www.com毛片| 岛国av免费在线| 久久男人资源站| 韩国一区二区av| 国产对白在线播放| 男人天堂1024| 婷婷视频在线播放| 国产精品秘入口18禁麻豆免会员| 日韩欧美国产片| 成人午夜免费在线| 日本国产一级片| 18禁免费无码无遮挡不卡网站| 亚洲精品自拍网| 精品国产免费av| 99中文字幕在线观看| 日韩中文字幕组| 97中文字幕在线| 欧美性视频在线播放| 大肉大捧一进一出好爽视频| 秋霞在线一区二区| 国产成人黄色网址| 久草资源站在线观看| 激情五月婷婷六月| 日韩av影视大全| 日韩av.com| 日本人视频jizz页码69| 国产精品网站免费| 2022中文字幕| 男人日女人的bb| 一级 黄 色 片一| www.污污视频| 日本黄色的视频| 香蕉视频999| 一区二区三区免费播放| 日本熟妇人妻xxxxx| 欧美三级一级片| 久久久久久久免费视频| 亚洲福利精品视频| 色婷婷综合网站| 性欧美极品xxxx欧美一区二区| 免费黄色日本网站| 成人午夜视频免费在线观看| 日韩avxxx| 亚洲少妇久久久| 日韩爱爱小视频| 国产黑丝在线视频| 精品嫩模一区二区三区| 国产精品12345| 亚洲成人天堂网| 欧美日韩亚洲国产成人|