點開選單不再卡頓,瞬間滑順展開且不做白工
現在點開 menu bar(螢幕最上方那排選單列)圖示時,popover(點按後彈出的懸浮面板)瞬間順滑展開,不再卡一下才出現。以前一按圖示就急著更新資料,跟面板畫出第一格畫面的工作在 main thread(主執行緒,畫面與操作都得排隊走的同一條通道)上撞車;而且就算內容沒變,每次打開都把整包 state JSON(記錄目前狀態的資料)重新注入面板,白做工。現在改成等面板完全顯示才開始更新,payload(要送進面板的那包資料)跟上次相同就跳過注入;只有 WebKit(負責畫出這個面板的網頁引擎)行程重載後才強制重注,出錯後的復原不受影響。就像去開門,以前手剛碰到門把,門房就急著塞一大包信給你卡住門;現在門房會等你完全推開門才遞上新信,除非他剛換班才會重新對一遍信件。