Получение ошибки «Пропущенные кадры! Приложение, возможно, слишком много работает над своим основным потоком» при попытке получить HTML исходный код из URL в android - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь получить HTML исходный код по URL в android. Я видел много ответов SO и обучающих видео / видео по устранению неполадок, но у меня все еще возникает эта проблема.

Первый шаг к исправлению ошибки «слишком много работы над основным потоком» - создать отдельный поток для делать трудоемкое кодирование. Я уже делал это, но у меня все еще возникают проблемы с пропуском кадров. Я даже переместил код, который будет выполняться нажатием кнопки.

Исходный код для любого html загружается примерно до 4000 символов, а затем остальная часть исходного кода прекращается.

Мой код:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);            
    src = findViewById(R.id.scrollview);
}

public void fetch(View v){
    DownloadTask task = new DownloadTask();
    String result = null;
    try {
        task.execute("https://www.zappycode.com");
        result = task.get();
    } catch (Exception e) {
        Log.i("Error in thread: ",e.toString());
    }
    Log.i("Result", result);
}

public class DownloadTask extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... urls) {

        String result = "";
        URL url;
        HttpURLConnection urlConnection = null;

        try {
            url = new URL(urls[0]);
            urlConnection = (HttpURLConnection) url.openConnection();
            InputStream in = urlConnection.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
            StringBuilder res = new StringBuilder();
            String line = null;
            while((line = reader.readLine()) != null)
                res.append(line);
            urlConnection.disconnect();
            return res.toString();
        } catch (Exception e) {
            e.printStackTrace();
            return "Failed";
        }
    }
}

Ошибка: 2020-05-05 16: 27: 38.119 14374-14374 / com.starw.sampledownload I / Хореограф: пропущено 124 кадра! Приложение может слишком много работать со своим основным потоком. 2020-05-05 16: 28: 00.281 14374-14397 / com.starw.sampledownload I / Surface: opservice is null false 2020-05-05 16: 28: 05.324 14374-14394 / com.starw.sampledownload W / System: Ресурсу не удалось вызвать end.

(я знаю, что это не ошибка, а предупреждение, но для моего варианта использования это ошибка, мне нужен весь источник страницы, а не его часть)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...