Android Bug記錄--Error: Webview js呼叫報錯Error calling method on NPObject
阿新 • • 發佈:2018-11-20
其他專案組的專案需要一個簡單h5專案,需要幫忙弄個android殼,就一個頁面,只不過需要播放聲音,沒有其他任何js互動,以後也不會有什麼js拓展。於是就簡單寫了個webview,加了js回撥,並封裝了聲音播放類,在js回撥中使用。
public class Javascript {
@JavascriptInterface
public void voice(final String voiceUrl) {
Player.getInstance().playUrl(voiceUrl);
}
}
因為聲音播放頻率低且短,所以沒考慮太多,直接在js中播放聲音(程式碼如上),安裝後,第一次聲音播放正常,但是發現後面再也無法播放聲音了,重啟app後又可以播放一次聲音。後面在h5中加日誌後發現在js呼叫時報錯:Error calling method on NPObject.
看到日誌,猜測應該是執行緒問題了,在js回撥中加了執行緒,果然一切正常:
原文地址:簡書ThinkinLiu
個人部落格:IT老五
public class Javascript { ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); @JavascriptInterface public void voice(final String voiceUrl) { cachedThreadPool.execute(new Runnable() { @Override public void run() { Player.getInstance().playUrl(voiceUrl); } }); } }