我有一个带有javascript 方法
的 webview,该方法
调用 android Javascript Interface(JAVA) 方法,然后
Javscript Interface(JAVA) 调用context(Reader) 活动的方法来打开 UI 屏幕。
当我直接从 ReaderActivity 运行 openDiscussionsUI() 时,它会很好地打开 UI,但从 Javascript 接口运行时却不能,它似乎没有像被中断一样完全通过 openDiscussionsUI() 方法运行?希望有人可以帮助我。提前致谢。
javascript方法
marginIconClick: function (itemId) {
activity.startDiscussionsActivity();
}
(JAVA) JavaScript 接口方法
public void startDiscussionsActivity() {
readerActivity.openDiscussionsUI();
Log.e("startDiscussionsActivity","startDiscussionsActivity");
}
ReaderActivity 方法
public void openDiscussionsUI() {
Log.e("openDiscussionsUI 1","openDiscussionsUI 1");
discussionBox.startAnimation(slidenotesup);
Log.e("openDiscussionsUI 2","openDiscussionsUI 2");
discussionBox.setVisibility(View.VISIBLE);
Log.e("openDiscussionsUI 3","openDiscussionsUI 3");
discussionDescription.requestFocus();
Log.e("openDiscussionsUI 4","openDiscussionsUI 4");
}
这是我的日志
点击图标编号 #1
11-06 17:21:39.190 12951-12980/com.double_eye.monamiq E/openDiscussionsUI 1﹕ openDiscussionsUI 1
11-06 17:21:39.190 12951-12980/com.double_eye.monamiq E/openDiscussionsUI 2﹕ openDiscussionsUI 2
点击图标编号#2
11-06 17:22:32.154 12951-12980/com.double_eye.monamiq E/openDiscussionsUI 1﹕ openDiscussionsUI 1
11-06 17:22:32.154 12951-12980/com.double_eye.monamiq E/openDiscussionsUI 2﹕ openDiscussionsUI 2
11-06 17:22:32.154 12951-12980/com.double_eye.monamiq E/openDiscussionsUI 3﹕ openDiscussionsUI 3
11-06 17:22:32.170 12951-12951/com.double_eye.monamiq I/WEBVIEW﹕ Message - 266:Uncaught Error: Error calling method on NPObject.
点击图标编号#3
11-06 17:22:52.818 12951-12980/com.double_eye.monamiq E/openDiscussionsUI 1﹕ openDiscussionsUI 1
11-06 17:22:52.818 12951-12980/com.double_eye.monamiq E/openDiscussionsUI 2﹕ openDiscussionsUI 2
11-06 17:22:52.818 12951-12980/com.double_eye.monamiq E/openDiscussionsUI 3﹕ openDiscussionsUI 3
11-06 17:22:52.818 12951-12980/com.double_eye.monamiq E/openDiscussionsUI 4﹕ openDiscussionsUI 4
11-06 17:22:52.818 12951-12980/com.double_eye.monamiq E/startDiscussionsActivity﹕ startDiscussionsActivity
点击图标编号#4
11-06 17:23:37.850 12951-12980/com.double_eye.monamiq E/openDiscussionsUI 1﹕ openDiscussionsUI 1
11-06 17:23:37.850 12951-12980/com.double_eye.monamiq E/openDiscussionsUI 2﹕ openDiscussionsUI 2
11-06 17:23:37.850 12951-12980/com.double_eye.monamiq E/openDiscussionsUI 3﹕ openDiscussionsUI 3
11-06 17:23:37.850 12951-12980/com.double_eye.monamiq E/openDiscussionsUI 4﹕ openDiscussionsUI 4
11-06 17:23:37.850 12951-12980/com.double_eye.monamiq E/startDiscussionsActivity﹕ startDiscussionsActivity
到了第3次和第4次,它运行了,但仍然没有显示ui,很奇怪。
更新:
Javascriptinterface 的回调未在 UI 线程上运行
public void test() { // 调用 AndroidInterface.test() 后 1ms 到达这里。到达网络线程。
public void startDiscussionsActivity() {
runOnUiThread(new Runnable() {
@Override
public void run() {
readerActivity.openDiscussionsUI();
Log.e("startDiscussionsActivity","startDiscussionsActivity");
}
});
}