Mr.*_*r.D 6 javascript user-interface multithreading android
出于某些原因,我必须在我的Android应用程序中使用WebView,并且部分业务逻辑包含在JavaScript中(我使用addJavascriptInterface()运行它).问题是我无法从绑定到脚本的对象修改我的应用程序的UI组件.这在文档中解释:
注意:绑定到JavaScript的对象在另一个线程中运行,而不是在构造它的线程中运行.
我想知道这个问题是否有一些解决方法?
Ole*_*gas 14
您需要将Handler实例传递给JavaScript接口并使用它在那里发布runnables.如果将在UI线程上创建此处理程序,则在UI线程上也将调用在其中发布的 runnables .
Handler mHandler = new Handler(); // must be created on UI thread, e.g. in Activity onCreate
// from javascript interface...
mHandler.post(new Runnable() {
@Override
public void run() {
// code here will run on UI thread
}
});
Run Code Online (Sandbox Code Playgroud)
另一种解决方法是使用Activity方法runOnUIThread
mActivity.runOnUIThread(new Runnable() {
@Override
public void run() {
// code here will run on UI thread
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5292 次 |
| 最近记录: |