Я пытался загрузить статью Андерсена "Гадкий утенок" (то есть HTML) в WebClient на Android, вот мой код.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setupWebClient();
}
private void setupWebClient() {
WebView webView = findViewById(R.id.webView);
String html = readTestHtml();
Long start = System.currentTimeMillis();
webView.loadData(html, "text/html", "UTF-8");
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
Long end = System.currentTimeMillis();
Log.i("test", String.format("Cost %dms", end - start));
}
});
}
/**
* Read HTML from "/sdcard/Download/test.html", which is "The ugly duckling" in Chinese.
*/
private String readTestHtml() {
File downloads = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
File file = new File(downloads,"test.html");
StringBuilder text = new StringBuilder();
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
text.append(line);
text.append('\n');
}
br.close();
}
catch (IOException e) {
e.printStackTrace();
}
return text.toString();
}
}
Загруженная статья написана на китайском языке.Потребовалось 7654мс, чтобы закончить загрузку.Однако, когда я заменил статью английской версией, она оказалась намного быстрее, и для ее завершения потребовалось всего 375 мс.Кажется, что у WebClient возникли проблемы с анализом китайских символов.Что я могу сделать, чтобы ускорить анализ китайских символов?
Тестовые материалы и устройство:
Обратите внимание, что на эмуляторах на базе x86 такой проблемы нет.Я могу воспроизвести эту проблему только на реальных телефонах.