将 unicode 文件 help.htm 加载到主线程中的 webview
load a unicode file help.htm into a webview in main thread
我正在尝试将文件 "assets/help-English/help.htm" 加载到网络视图 [名为 howTo] 中。它捕获 IOException 并将错误消息加载到 webview 中。我在 logcat "The application may be doing too much work on its main thread".
中找到了这个
我是否需要为此进程创建一个线程,或者我是否有其他问题导致此消息?我已经有了创建线程的代码,所以这不是问题。如果我错过了什么,我不想这样做。
我想我可能错过了一些东西,因为我确信我过去已经成功地读取了资产而没有创建单独的线程。
帮助文件采用 unicode 格式,因此它们将以多种语言显示。为此,我使用了 Google 翻译。它们是使用简单 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);
您不需要使用不同的线程,但如果资产文件足够大,读取文件将花费足够的时间 Android 会抱怨.
"If you have operations to perform that are not instantaneous, you should make sure to do them in separate threads (" 背景”或 "worker" 个线程)。” Processes and Threads.
我正在尝试将文件 "assets/help-English/help.htm" 加载到网络视图 [名为 howTo] 中。它捕获 IOException 并将错误消息加载到 webview 中。我在 logcat "The application may be doing too much work on its main thread".
中找到了这个我是否需要为此进程创建一个线程,或者我是否有其他问题导致此消息?我已经有了创建线程的代码,所以这不是问题。如果我错过了什么,我不想这样做。
我想我可能错过了一些东西,因为我确信我过去已经成功地读取了资产而没有创建单独的线程。
帮助文件采用 unicode 格式,因此它们将以多种语言显示。为此,我使用了 Google 翻译。它们是使用简单 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);
您不需要使用不同的线程,但如果资产文件足够大,读取文件将花费足够的时间 Android 会抱怨.
"If you have operations to perform that are not instantaneous, you should make sure to do them in separate threads (" 背景”或 "worker" 个线程)。” Processes and Threads.