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

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

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

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

19.08.2014, 23:24. Просмотров 559. Ответов 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
Подскажите, в чем может быть причина вылетов?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.08.2014, 23:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вылет при выролнении объемной задачи в AsyncTask (Программирование Android):

Ошибка при запуске AsyncTask при нажатии на пункт ActionBar - Программирование Android
Здравствуйте, почему при нажатии на пункт Action Bar'а вылетает ошибка? @Override public boolean onCreateOptionsMenu(Menu menu)...

Progressdialog при выполнении asynctask - Программирование Android
Здравствуйте! Есть asynctask который отправляет запрос и после парсит страницу. Хотел добавить Progressdialog который начинал бы работать...

Запуск AsyncTask при повороте девайса - Программирование Android
Здравствуйте, мне нужно запустить AsyncTask при повороте девайса... код есть но он не работает...( помогите пожалуйста...) ..... ...

Вылет при фотографировании - Программирование Android
Давно пытаюсь словить эту проблему: вылетает приложение 1 раз на ~50 снимков - takePicture failed. Задержка есть, surface тоже,...

Как реализовать Синхронное выполнение двух функций при вызове AsyncTask - Программирование Android
как сделать так чтобы при нажатии на BUTTON с начало выполнилась функция getSignIns а после удачного выполнения выполнялась ...

Вылет при нажатии кнопки - Программирование Android
Доброго времени суток. Опять непонятная ошибка, при нажатии кнопки приложение вылетает. Вот ошибка: java.lang.IllegalStateException:...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ILNAR_93
Android
221 / 221 / 23
Регистрация: 19.01.2013
Сообщений: 1,686
Записей в блоге: 3
20.08.2014, 08:06 #2
попробуй

Project > Clean

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

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

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

Добавлено через 44 секунды
может проблема в фале R.java ?
0
Alexvp
108 / 72 / 8
Регистрация: 03.08.2014
Сообщений: 348
20.08.2014, 09:15  [ТС] #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 минуту
Упс... как говорится, утро вечера мудренее Стал перепроверять файл конфигурации и увидел опечатку
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.08.2014, 09:15
Привет! Вот еще темы с ответами:

Вылет приложения при работе с jsoup - Программирование Android
приложение вылетает на строках : String html = "<html>Some html text</html>"; Document doc = Jsoup.parse(html);либу пробовал по разному...

TextWatcher. При добавлении в проект вылет - Программирование Android
Доброго времени суток. На активити есть EditText, хочу добавить в проект обработчик изменения текста в этом элементе. Во всемогущем...

Вылет при переходе на второй активити - Программирование Android
Подключал библиотеку android-support-v7-appcompat, но на неё, кажется, не жалуется(крестиков не видно). MainActivity.java package...

Canvas-игра. Вылет при сворачивании - Программирование Android
public class GameView extends SurfaceView { private GameThread mThread; SurfaceHolder holder; Bitmap fon =...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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