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

Ошибка потока в сервисе - Android

Восстановить пароль Регистрация
 
ASDFD12
31 / 31 / 5
Регистрация: 15.09.2012
Сообщений: 408
16.12.2013, 15:33     Ошибка потока в сервисе #1
Создаю сервис, он должен выполнять парсинг сайта, загрузку звука с сайта, сохранение этого звука на флешку и воспроизведение. Написал код который все это выполняет в Активити. Но нужно чтобы это все делалось в фоне. Для этого решил использовать сервис. Чтобы не грузило основной поток приложения, которое запускает сервис, решил все эти задачи поместить в отдельный поток в сервисе. Но не работает.
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
public int onStartCommand(Intent intent, int flags, int startId) {
        Log.d(LOG_TAG, "onStartCommand");
        someTask(); // в этой функции вся реализация 
        return super.onStartCommand(intent, flags, startId);
      }
 
 
 void someTask() {
            new Thread(new Runnable() { // вот создаю поток
              public void run() {
                  
                  try {
                      
                
                      
                      
                      
                      
                      // Делаю парсинг сайта( беру значение одного тега)
                      Document doc = Jsoup.connect("url_site").get();
                      Elements bids=doc.getElementsByTag("tag");
 
                        // загружаю звуковой файл в файл на флешке
                  
                         URL url = new URL(" site ");
                          URLConnection conexion = url.openConnection();
                          conexion.connect();
 
      InputStream input = new BufferedInputStream(url.openStream());
      OutputStream output = new FileOutputStream(sdFile); // здесь sdFile указывает на файл флешки
 
                          
 
                          while ((c = input.read(buffer)) != -1) {
                              output.write(buffer, 0, c);
                          }
 
                          output.flush();
                          output.close();
                          input.close();    
                      
                        } 
                                     
                     catch (IOException e)
                     {
                         
                         e.printStackTrace();
                     }
                        
                    try {TimeUnit.SECONDS.sleep(1);
                    }
                    catch (InterruptedException e){}
                
                
    
                
             
                                  }
            }).start();
          }
В чем проблема ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
angryrobot
Командир зеленых роботов
 Аватар для angryrobot
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 563
16.12.2013, 16:18     Ошибка потока в сервисе #2
В чем конкретно проблема? А в основном потоке работало ? Если крэшится приложение, то приложи стектрейс.
ASDFD12
31 / 31 / 5
Регистрация: 15.09.2012
Сообщений: 408
16.12.2013, 16:27  [ТС]     Ошибка потока в сервисе #3
Цитата Сообщение от angryrobot Посмотреть сообщение
В чем конкретно проблема? А в основном потоке работало ? Если крэшится приложение, то приложи стектрейс.
Визуально то хоть все правильно сделано? Можно в потоке создавать разные обьекты, что делается с этими обьектами после выполнения потока? Я так понимаю поток закрывается и обьекты удаляються. У меня почему-то AVD очень долго запускается, поэтому отладку сложно произвести. Я оставлял у блоке try , это в функции run потока, только первые две строчки
Java
1
2
 Document doc = Jsoup.connect("site").get();
 Elements bids=doc.getElementsByTag("bid");
все остальное закоментировал. Ошыбка осталась. Запускал приложение непосредственно на смартфоне.
Только запускаю сервис из приложения сразу вылетает ошыбка. Неужели обьект doc нельзя создавать в потоке? может к потоку нада подключить какой то интерфейс?
angryrobot
Командир зеленых роботов
 Аватар для angryrobot
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 563
16.12.2013, 16:33     Ошибка потока в сервисе #4
Цитата Сообщение от ASDFD12 Посмотреть сообщение
Визуально то хоть все правильно сделано?
Возможно, не могу точно сказать

Цитата Сообщение от ASDFD12 Посмотреть сообщение
Можно в потоке создавать разные объекты, что делается с этими объектами после выполнения потока?
Можно создавать объекты в любом потоке, и уничтожаться они будут точно так же вне зависимости от того в каком потоке их создали. Как только пропала последняя сильная ссылка на объект - он будет вскоре уничтожен.

Цитата Сообщение от ASDFD12 Посмотреть сообщение
Ошыбка осталась
Показывай ошибку, я же не Ванга чтоб гадать
ASDFD12
31 / 31 / 5
Регистрация: 15.09.2012
Сообщений: 408
16.12.2013, 16:39  [ТС]     Ошибка потока в сервисе #5
как мне узнать ошибку, если AVD не запускается и в отладке я новичек, а при компиляции все ОК.
Vladimirys
292 / 189 / 19
Регистрация: 16.01.2010
Сообщений: 526
16.12.2013, 17:14     Ошибка потока в сервисе #6
В эклипсе, есть LogCat, там "все ходы записаны".
ASDFD12
31 / 31 / 5
Регистрация: 15.09.2012
Сообщений: 408
16.12.2013, 17:24  [ТС]     Ошибка потока в сервисе #7
Цитата Сообщение от Vladimirys Посмотреть сообщение
В эклипсе, есть LogCat, там "все ходы записаны".
Но если виртуальное устройство не запускается я logcat не посмотрю, может можно посмотреть логи на реальном смартфоне?
Vladimirys
292 / 189 / 19
Регистрация: 16.01.2010
Сообщений: 526
16.12.2013, 17:29     Ошибка потока в сервисе #8
Так запустите устройство, его можно просто так запустить, без всяких программ. Выбираем эмулятор в AVD и жмём start
korsaj
148 / 117 / 9
Регистрация: 16.08.2013
Сообщений: 506
16.12.2013, 20:56     Ошибка потока в сервисе #9
CatLog есть на плеймаркете, ставьте и смотрите логи.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2013, 23:25     Ошибка потока в сервисе
Еще ссылки по теме:

Android Отзывы о сервисе geekbrains (ru)
Подмена потока с микрофона Android
Android Как запустить метод в сервисе, в определённое время?
Android Возврат данных из потока
Остановка потока Android

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

Или воспользуйтесь поиском по форуму:
ASDFD12
31 / 31 / 5
Регистрация: 15.09.2012
Сообщений: 408
16.12.2013, 23:25  [ТС]     Ошибка потока в сервисе #10
Был какой то глюк в Eclipse. Переустановил плагин ADT? обновил свойства проекта и все заработало.))) Всем спасибо.
Yandex
Объявления
16.12.2013, 23:25     Ошибка потока в сервисе
Ответ Создать тему
Опции темы

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