【发布时间】:2017-01-07 16:14:45
【问题描述】:
在版主将此问题标记为重复之前,我已经阅读了堆栈中的所有相关问题,并且没有关于该问题的任何报告!
我在尝试将 AsyncTask 与 WebView 一起使用时遇到问题,请按照代码进行操作
final WebView webNISR = (WebView) findViewById(R.id.web_NISR);
final WebSettings webS_NISR = webNISR.getSettings();
AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>() {
@Override
protected void onPreExecute(){
webNISR.setVisibility(View.GONE);
// I left webNISR.loadUrl here for test, but it keeps processing slow, nothing changes!
webNISR.loadUrl(getString(R.string.waytofile)+"file.html");
}
@Override
protected Void doInBackground(Void... params) {
webS_NISR.setJavaScriptEnabled(true);
webS_NISR.setDomStorageEnabled(true);
//webNISR.loadUrl(params);
return null;
}
@Override
protected void onPostExecute(Void result){
webNISR.setVisibility(View.VISIBLE);
}
};
在doInBackground() 中处理就好了!
但是我不能在里面使用webNISR.loadUrl(),我总是得到错误“Method loadUrl must be called from the UI or UI thread, current inferred thread is worker”,但如果我正在使用此进程的 AsyncTask 将在另一个线程上完成,并且不加载 UIThread(它使应用程序变慢)。
我知道任何改变视图的东西都必须是onPostExecute() 或onPreExecute(),但不会是webNISR.loadUrl() 会减慢 Activity 的加载速度吗?
我需要“包含”WebView 渲染,这样我才能获得性能提升或只是设法加载页面。
值得一提的是,每个activity大约有7个WebView,所以需要工作加载页面。
注意:WebView 是不可替代的(只有它们可以加载那些本地文件)
我不再知道该怎么做,我已经进入这场战斗的日子:/
欢迎提出任何问题!
谢谢!
【问题讨论】:
标签: android android-studio android-asynctask android-webview