天天看點

js調用了app爆露的方法導緻app閃退

場景

app端使用webview加載網頁,并提供了一個closeWeb方法給網頁端調用。但是沒想到,網頁調用這個方法導緻app閃退。

原因分析

大家知道,不管是Android還是IOS都隻能在主線程中操作UI,如果在其它線程中操作UI會直接閃退。上述問題就是這個原因導緻。

原生提供的closeWeb方法裡面有操作UI邏輯,而且沒有主動把這部分邏輯放在主線程中,那js調用的時候,就是在目前調用線程中執行UI的邏輯。而在浏覽器中,點選事件、網絡請求都是浏覽器新開的線程。是以導緻app閃退。

總結

app爆露給網頁的方法,操作UI的邏輯要主動切換到主線程中。