在我的应用程序中,我需要使用特定视图(WebView)在后台使用一些JavaScript代码。这意味着webview必须在屏幕外。最初我使用 runOnUiThread 在UI线程中创建了这个视图,但我注意到当我在UI中进行一些操作(触摸屏幕以移动某个对象)时,我的背景视图似乎变慢并且不是&#34 ; resposnive"按要求。从这里想法到"执行"在辅助线程中的此视图使其独立。我不知道这是否可行。我开始制作这段代码:
class WebViewThread extends Thread
{
public WebView MyWebView = null;
public void run()
{
Looper.prepare();
MyWebView = new WebView(MainActivityContext);
Looper.loop();
}
}
问题是如果我尝试"互动"在视图中从UI线程调用某个方法我得到了一个运行时错误,告诉我该视图只能由创建它的同一个线程触及。不幸的是,这个帖子被锁定了#34;进入循环,我不知道如何"注入"这个帖子里面的交互代码。
现在的问题是:我在二级线程中创建和管理视图的想法可以完成,或者是一个非常糟糕的想法无法工作?
答案 0 :(得分:0)
至于这是否是一个好主意,更有经验的人将不得不详细阐述这个主题。但是,对于您要做的事情,假设您没有触及任何UI元素,您可以尝试使用处理程序将代码传递给您的webview。看看是否有效:
Handler handler;
class WebViewThread extends Thread
{
public WebView MyWebView = null;
public void run()
{
Looper.prepare();
MyWebView = new WebView(MainActivityContext);
//the handler will run on the thread
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
//do stuff to my webview
}
};
Looper.loop();
}
}
然后你可以让处理程序用
做事handler.sendMessage(message);