java - 将 unicode 文件 help.htm 加载到主线程中的 webview 中

标签 java android multithreading unicode webview

我正在尝试将文件“assets/help-English/help.htm”加载到 webview [名为 howTo] 中。它捕获 IOException 并将错误消息加载到 Web View 中。我在 logcat 中找到了这一点“应用程序可能在其主线程上做了太多工作”。

我是否需要为此进程创建一个线程,或者我是否有其他问题导致此消息?我已经有了创建线程的代码,所以这不是问题。如果我错过了什么,我只是不想这样做。

我想我可能错过了一些东西,因为我确信我过去已经成功地从 Assets 中读取了内容,而没有创建单独的线程。

帮助文件采用 unicode 格式,因此将以多种语言显示。我为此使用了谷歌翻译。它们是使用简单的 HTML 编辑器和记事本创建的小于 10K 字节的简单 unicode 文本文件。

log.i 语句显示预期的文本。 While 循环中的循环不会被执行。

AssetManager am = activity.getAssets();
StringBuilder sb = new StringBuilder(1024);
String lineHelp;

Log.i(TAG, "Locale = " + Locale.getDefault().getDisplayLanguage());
Log.i(TAG, "Locale = " + Locale.getDefault());
try {
    InputStream is = am.open("help-" +     Locale.getDefault().getDisplayLanguage()
     + "/help.htm");
BufferedReader br = new BufferedReader(new InputStreamReader(is));
while((lineHelp = br.readLine()) != null) {
    Log.i(TAG, "lineHelp = " + lineHelp + "\n");
    sb.append(lineHelp);
}
} catch (IOException e) {
    sb.append(getString(R.string.HelpFileProblem));
    sb.append(e.getMessage());
}
lineHelp = sb.toString();
Log.i(TAG, "lineHelp = " + lineHelp);
howTo.loadDataWithBaseURL(null, lineHelp, "text/html", "unicode", null);

最佳答案

不需要使用不同的线程,但如果 Assets 文件足够大,读取文件将花费足够的时间,Android 会提示。

“如果要执行的操作不是即时的,则应确保在单独的线程(“后台”或“工作”线程)中执行这些操作。” Processes and Threads .

关于java - 将 unicode 文件 help.htm 加载到主线程中的 webview 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29867230/

相关文章:

java - 线程 "main"java.lang.VerifyError : class org. bouncycaSTLe.asn1.ASN1Primitive 中的异常覆盖 final方法 equals.(Ljava/lang/Object;)Z

java - 使用 BatchUpdateExcpetion 处理 JDBC BatchUpdate 异常

java - 使用 Java [json-simple.jar 库] 将名称添加到 JsonArray 或 JsonObject

安卓 YouTube API "An error occurred while initializing YouTube player"

java - 我有两个线程,两个几乎相同的东西,但仅在其中一个上出现 CalledFromWrongThreadException 错误。为什么?

java - 批量插入现有数据 : Preventing JPA to do a select before every insert

java - Mapbox Android SDK - 致命信号 11 (SIGSEGV)

.net - 从某个线程调用方法时"Unable to evaluate expression because the code is optimized"

Java多线程阅读资料

java - 程序显示空指针异常....将 double 转换为 int