Android與Js交互

1. 前言

  • 現(xiàn)在很多的App里都內(nèi)置了Web網(wǎng)頁(yè)(Hybrid App),比如說(shuō)很多電商平臺(tái),淘寶、京東、聚劃算等等
  • 他們的頁(yè)面是由Android的WebView實(shí)現(xiàn)的,其中涉及到Android客戶端與Web網(wǎng)頁(yè)的交互

2. 交互方式總結(jié)

對(duì)于Android調(diào)用JS代碼的方法有2種:

1.通過(guò)WebView的loadUrl()
2.通過(guò)WebView的evaluateJavascript()

對(duì)于JS調(diào)用Android代碼的方法有3種:

1.通過(guò)WebView的addJavascriptInterface()進(jìn)行對(duì)象映射
2.通過(guò) WebViewClient 的shouldOverrideUrlLoading ()方法回調(diào)攔截 url
3.通過(guò) WebChromeClient 的onJsAlert()、onJsConfirm()、onJsPrompt()方法回調(diào)攔截JS對(duì)話框alert()、confirm()、prompt() 消息

3. 對(duì)比

image.png

4.WebView的坑

Ⅰ.WebView的銷毀和內(nèi)存泄漏問(wèn)題。WebView的完全銷毀是件麻煩事,一旦銷毀流程不正確,極易容易導(dǎo)致內(nèi)存泄漏。

原因:WebView會(huì)關(guān)聯(lián)一個(gè)Activity,Web4View執(zhí)行的操作是在新線程當(dāng)中回收,時(shí)間Activity沒(méi)有辦法確認(rèn),Activity的生命周期和WebView線程生命周期不一致導(dǎo)致WebView一直執(zhí)行,因?yàn)閃ebView內(nèi)部持有Activity的引用,導(dǎo)致Activity一直不能被回收,原理類似于匿名內(nèi)部類持有外部類的引用一樣。那么如何解決呢?

解決方案如下:
a.使含WebView的界面在獨(dú)立進(jìn)程(銷毀時(shí)System.exit(0)),簡(jiǎn)單暴力,涉及到進(jìn)程間通信。(開發(fā)過(guò)程中常用)
b.動(dòng)態(tài)添加WebView,對(duì)傳入WebView中使用Context弱引用,動(dòng)態(tài)添加WebView意思在布局中創(chuàng)建一個(gè)ViewGroup用來(lái)放置WebView,Activity創(chuàng)建add進(jìn)來(lái),Activity停止時(shí)remove掉。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 對(duì)于Android調(diào)用JS代碼的方法有2種: 1. 通過(guò)WebView的loadUrl() 2. 通過(guò)WebVie...
    Harrison_CSL閱讀 1,413評(píng)論 1 3
  • 現(xiàn)在越來(lái)越多的App是混合開發(fā),很需要原生與網(wǎng)頁(yè)交互,下面介紹如何交互以及有可能出現(xiàn)的坑。 Java調(diào)用JS方法 ...
    辯護(hù)人閱讀 8,957評(píng)論 0 30
  • 方式一、通過(guò) WebView的addJavascriptInterface()進(jìn)行對(duì)象映射 1.定義一個(gè)與JS對(duì)象...
    霍霍9527閱讀 6,467評(píng)論 0 3
  • 先來(lái)說(shuō)說(shuō)什么是JS交互:說(shuō)的俗一點(diǎn)就是通過(guò)我們項(xiàng)目中的控件來(lái)調(diào)用HTML里的JS代碼,也可以通過(guò)JS來(lái)調(diào)用項(xiàng)目中的...
    忞鹿閱讀 21,803評(píng)論 6 138
  • 原生頁(yè)面雖然有著天然優(yōu)勢(shì),但是在一些復(fù)雜頁(yè)面和混排頁(yè)面上,卻沒(méi)有網(wǎng)頁(yè)來(lái)的快,所以在實(shí)際項(xiàng)目中,很多情況下都是原生頁(yè)...
    androidfan閱讀 13,917評(píng)論 0 5

友情鏈接更多精彩內(nèi)容