Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Alexvp
107 / 71 / 8
Регистрация: 03.08.2014
Сообщений: 344
#1

Вылет при выролнении объемной задачи в AsyncTask - Программирование Android

19.08.2014, 23:24. Просмотров 552. Ответов 2
Метки нет (Все метки)

Добрый день,

Столкнулся с одной проблемой и не пойму с какой стороны искать решение.
Приложение при первоначальном запуске конфигурируется исходя из характеристик аппарата пользователя. Процесс большой, поэтому выполняется в AsyncTask. При небольших объемах задачи все работает отлично. Но при увеличении объема и, следовательно, времени обработки, происходит вылет.
Задача это открытие текстовых файлов и разбиение их на страницы вывода в зависимости от размеров экрана. Описание каждой страницы сохраняется в таблице базы данных.
Вот лог с ошибками:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
08-19 15:14:13.535: W/ResourceType(935): No package identifier when getting value for resource number 0x00000000
08-19 15:14:13.555: W/dalvikvm(935): threadid=11: thread exiting with uncaught exception (group=0xb3ad7ba8)
08-19 15:14:13.575: E/AndroidRuntime(935): FATAL EXCEPTION: AsyncTask #1
08-19 15:14:13.575: E/AndroidRuntime(935): Process: com.test.111, PID: 935
08-19 15:14:13.575: E/AndroidRuntime(935): java.lang.RuntimeException: An error occured while executing doInBackground()
08-19 15:14:13.575: E/AndroidRuntime(935):  at android.os.AsyncTask$3.done(AsyncTask.java:300)
08-19 15:14:13.575: E/AndroidRuntime(935):  at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
08-19 15:14:13.575: E/AndroidRuntime(935):  at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
08-19 15:14:13.575: E/AndroidRuntime(935):  at java.util.concurrent.FutureTask.run(FutureTask.java:242)
08-19 15:14:13.575: E/AndroidRuntime(935):  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
08-19 15:14:13.575: E/AndroidRuntime(935):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
08-19 15:14:13.575: E/AndroidRuntime(935):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
08-19 15:14:13.575: E/AndroidRuntime(935):  at java.lang.Thread.run(Thread.java:841)
08-19 15:14:13.575: E/AndroidRuntime(935): Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x0
08-19 15:14:13.575: E/AndroidRuntime(935):  at android.content.res.Resources.getValue(Resources.java:1123)
08-19 15:14:13.575: E/AndroidRuntime(935):  at android.content.res.Resources.openRawResource(Resources.java:1038)
08-19 15:14:13.575: E/AndroidRuntime(935):  at android.content.res.Resources.openRawResource(Resources.java:1015)
08-19 15:14:13.575: E/AndroidRuntime(935):  at com.test.111.LoadActivity$CountPages.doInBackground(LoadActivity.java:210)
08-19 15:14:13.575: E/AndroidRuntime(935):  at com.test.111.LoadActivity$CountPages.doInBackground(LoadActivity.java:1)
08-19 15:14:13.575: E/AndroidRuntime(935):  at android.os.AsyncTask$2.call(AsyncTask.java:288)
08-19 15:14:13.575: E/AndroidRuntime(935):  at java.util.concurrent.FutureTask.run(FutureTask.java:237)
08-19 15:14:13.575: E/AndroidRuntime(935):  ... 4 more
Подскажите, в чем может быть причина вылетов?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.08.2014, 23:24     Вылет при выролнении объемной задачи в AsyncTask
Посмотрите здесь:
Android Ошибка при запуске AsyncTask при нажатии на пункт ActionBar
Progressdialog при выполнении asynctask Android
Запуск AsyncTask при повороте девайса Android
Вылет при фотографировании Android
Android Как реализовать Синхронное выполнение двух функций при вызове AsyncTask
Вылет при нажатии кнопки Android
TextWatcher. При добавлении в проект вылет Android
Вылет при переходе на второй активити Android
Вылет приложения при работе с jsoup Android
Android Canvas-игра. Вылет при сворачивании
Непонятный вылет приложения при установки значения в NumberPicker Android
Android Вылет приложения при запуске после загрузки шрифта

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ILNAR_93
Android
219 / 219 / 22
Регистрация: 19.01.2013
Сообщений: 1,642
Записей в блоге: 3
20.08.2014, 08:06     Вылет при выролнении объемной задачи в AsyncTask #2
попробуй

Project > Clean

и попробуй компилировать.

Добавлено через 3 минуты
Но наверняка ошибка в коде,

он не может найти ресурс

Добавлено через 44 секунды
может проблема в фале R.java ?
Alexvp
107 / 71 / 8
Регистрация: 03.08.2014
Сообщений: 344
20.08.2014, 09:15  [ТС]     Вылет при выролнении объемной задачи в AsyncTask #3
Проверял на реальном устройстве и на эмуляторе в версиях от 2.3.3 до 4.4 везде одно и тоже - при числе текстовых файлов меньше 15 все работает отлично, поэтому не думаю, что в коде есть ошибка.
Алгоритм работы таков - при первоначальном запуске приложение читает файл конфигурации в формате xml, где перечислены все части книги и имена файлов, где эти части расположены. Имена файлов сохраняются в массиве. doInBackground в цикле берет из этого массива очередное имя файла, считывает содержимое и разбивает на страницы. Так как doInBackground до 15 файлов обрабатывает их корректно, то пока считаю, что его код не содержит ошибок.
Массив формируется таким кодом:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
    String[] Files;
    String[] TitleChapter;
 
    private void loadpartsbook() {
        // загрузка списка частей (глав) книги
    // в начале определяем сколько всего частей     
        int len = 0;
        try {
            XmlPullParser parser = getResources().getXml(R.xml.bookparts);
            while (parser.getEventType()!= XmlPullParser.END_DOCUMENT) {
                if (parser.getEventType() == XmlPullParser.START_TAG && parser.getName().equals("part")) {
                    len++;
                }
                parser.next();
            }
        }
        catch (Throwable t) {
        }
       // создаем массивы
        String[] itemid = new String[len];
        String[] partname = new String[len];
        String[] filepart = new String[len];
        int m=0;
 
         try {
                XmlPullParser parser = getResources().getXml(R.xml.bookparts);
                while (parser.getEventType()!= XmlPullParser.END_DOCUMENT) {
                    if (parser.getEventType() == XmlPullParser.START_TAG && parser.getName().equals("part")) {
                        itemid[m] = parser.getAttributeValue(0);
                        partname[m] = parser.getAttributeValue(1);
                        filepart[m] = parser.getAttributeValue(2);
                        m++;
                    }  
                        parser.next();
                }   
            }
            catch (Throwable t) {
            }
             // сохраняем созданные массивы в общих переменных для дальнейшей обработки
         Files = filepart;
         TitleChapter = partname;
    }
На свой взгляд ошибок не вижу. Могу выложить код AsyncTask, но он очень объемный

Добавлено через 31 минуту
Упс... как говорится, утро вечера мудренее Стал перепроверять файл конфигурации и увидел опечатку
Yandex
Объявления
20.08.2014, 09:15     Вылет при выролнении объемной задачи в AsyncTask
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru