場景
app端使用webview加載網頁,並提供了一個closeWeb方法給網頁端調用。但是沒想到,網頁調用這個方法導致app閃退。
原因分析
大家知道,不管是Android還是IOS都只能在主線程中操作UI,如果在其它線程中操作UI會直接閃退。上述問題就是這個原因導致。
原生提供的closeWeb方法裏面有操作UI邏輯,而且沒有主動把這部分邏輯放在主線程中,那js調用的時候,就是在當前調用線程中執行UI的邏輯。而在瀏覽器中,點擊事件、網絡請求都是瀏覽器新開的線程。所以導致app閃退。
總結
app爆露給網頁的方法,操作UI的邏輯要主動切換到主線程中。