4 回答

TA貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個贊
你好:
一、網(wǎng)頁的JS代碼調(diào)用ANDROID中JAVA代碼的方法
在網(wǎng)頁中調(diào)用java代碼、需要在webview控件中添加javascriptInterface
contentWebView = (WebView) findViewById(R.id.webview);
//啟用javascript
contentWebView.getSettings().setJavaScriptEnabled(true);
contentWebView.addJavascriptInterface(this, "js對象名");
在Activity中定義一個要被js調(diào)用的方法、src為js傳遞過來的參數(shù)、如果沒有不傳也可以
public void jsFunction(final String str) {
Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
runOnUiThread(new Runnable() {
@Override
public void run() {
//在里對Android應(yīng)用的UI進(jìn)行處理
}
});
}
在網(wǎng)頁中、只需要像調(diào)用js方法一樣、進(jìn)行調(diào)用就可以
<a onClick="window.js對象名.jsFunction(′hello world′)" >
點(diǎn)擊調(diào)用java代碼并傳遞參數(shù)
</a>
二、ANDROID中JAVA代碼調(diào)用網(wǎng)頁的JS代碼的方法
Java代碼調(diào)用js并傳參其實(shí)是通過WebView的loadUrl方法去調(diào)用的、只是參數(shù)url的寫法不一樣而已
// 無參數(shù)調(diào)用
contentWebView.loadUrl("javascript:javacalljs()");
// 傳遞參數(shù)調(diào)用
contentWebView.loadUrl("javascript:javacalljswithargs("
+ "′hello world′" + ")");
三、JAVA和JS交互注意事項(xiàng)
1、Java 調(diào)用 js 里面的函數(shù)、效率并不是很高、估計(jì)要200ms左右吧、做交互性很強(qiáng)的事情、這種速度很難讓人接受、而js去調(diào)Java的方法、速度很快、50ms左右、所以盡量用js調(diào)用Java方法
2、Java 調(diào)用 js 的函數(shù)、沒有返回值、調(diào)用了就控制不到了
3、Js 調(diào)用 Java 的方法、返回值如果是字符串、你會發(fā)現(xiàn)這個字符串是 native 的、轉(zhuǎn)成 locale 的才能正常使用、使用 toLocaleString() 函數(shù)就可以了、不過這個函數(shù)的速度并不快、轉(zhuǎn)化的字符串如果很多、將會很耗費(fèi)時間
4、網(wǎng)頁中盡量不要使用jQuery、執(zhí)行起來需要5-6秒、最好使用原生的js寫業(yè)務(wù)腳本、以提升加載速度、改善用戶體驗(yàn)

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個贊
js不能直接調(diào)用java的函數(shù),你可以通過ajax的方式接收java函數(shù)的返回值來讓js使用
- 4 回答
- 0 關(guān)注
- 842 瀏覽
添加回答
舉報