Загрузка неанглоязычных текстов в n раз медленнее загрузки англоязычных текстов в WebClients - PullRequest
0 голосов
/ 03 марта 2019

Я пытался загрузить статью Андерсена "Гадкий утенок" (то есть 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 такой проблемы нет.Я могу воспроизвести эту проблему только на реальных телефонах.

...