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

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

Войти
Регистрация
Восстановить пароль
 
ILNAR_93
Android
219 / 219 / 22
Регистрация: 19.01.2013
Сообщений: 1,656
Записей в блоге: 3
#1

Ошибка OutOfMemory в Service - Программирование Android

21.11.2016, 12:04. Просмотров 187. Ответов 3
Метки нет (Все метки)

Используется
Retrofit и GsonConverterFactory


Есть фрагнмент поиска, при открытии запускается сервис и периодически(8 секунд) получает json - до выполнения условия, а во фрагменте ProgressBar.

При каждом получении данных
запускаю Service для актуализации данных в сервисе

Java
1
2
3
4
5
Intent service = new Intent(ctx, find.class);
                                    service.putExtra(Constants.OPEN, false);
                                    service.putExtra(Constants.INFO_TYPE, 1);
                                    service.putExtra(Constants.Serializable_CLASS, response.body().Data);
                                    context.startService(service);

в сервисе актуализирую данные след образом

Java
1
2
3
4
5
6
7
8
9
 for(int i = 0; i< List.size(); i++){
            if (List.get(i).Id.equalsIgnoreCase(fiClass.Id)){
                List.set(i, fiClass);
                Log.d("service", "Изменил "+fiClass.Id);
                return;
            }
        }
        Log.d("service", "Добавил "+fiClass.Id);
        List.add(fiClass);

Минуту работает и валится..OutOfMemory. Что делаю не так?

Добавлено через 14 минут
XML
1
2
3
4
5
6
7
8
9
10
11
FATAL EXCEPTION: main
                                                                  Process: su.el_teh.taxiya, PID: 32694
                                                                  java.lang.OutOfMemoryError: Could not allocate JNI Env
                                                                      at java.lang.Thread.nativeCreate(Native Method)
                                                                      at java.lang.Thread.start(Thread.java:1063)
                                                                      at java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:921)
                                                                      at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1339)
                                                                      at com.squareup.okhttp.Dispatcher.enqueue(Dispatcher.java:110)
                                                                      at com.squareup.okhttp.Call.enqueue(Call.java:113)
                                                                      at com.squareup.okhttp.Call.enqueue(Call.java:105)
                                                                      at retrofit.OkHttpCall.enqueue(OkHttpCall.java:70)
Добавлено через 44 минуты
В сервисе создается RespClass один раз при создании сервиса и вызывается метод create - периодичностью 8 секунд.

из-за этого может быть OutOfMemory?


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
 public class RespClass {
 
 
public void create(Model model){
            Retrofit restAdapter = new Retrofit.Builder()
                .baseUrl(singleton.serverURL)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        restAdapter.client().setReadTimeout(60, TimeUnit.SECONDS);
        restAdapter.client().setConnectTimeout(10, TimeUnit.SECONDS);
        TaxiAPI post = restAdapter.create(TaxiAPI.class);
        try {
            post.create(model).enqueue(new retrofit.Callback<Apig>() {
                @Override
                public void onResponse(retrofit.Response<Apig> response, Retrofit retrofit) {
                   
                }
 
                @Override
                public void onFailure(Throwable t) {
                    Log.d("TX", "ERRORRR " + t.getMessage());
                   }
            });
        } catch (Exception ex)
        {
            ex.printStackTrace();
        }
    }
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2016, 12:04     Ошибка OutOfMemory в Service
Посмотрите здесь:

google map v2 outOfMemory - Программирование Android
Подскажите пожалуйста, в чём может быть проблема. При перемещении карты google v2 в скором времени наступает outOfMemory. Ссылаясь на этот...

OutOfMemory при создании большого Bitmap - Программирование Android
Всем привет! Пытаюсь создать Bitmap размером 5120 * 2600 точек, на что отладчик ругается, что мол нет памяти. Неужели это непосильная для...

Android OutOfMemory error while scaling big images - Программирование Android
Добрый день! Буду благодарна, если поможете решить небольшую проблемку. Имеется несколько изображений (около пяти), которые я...

Service - Программирование Android
Как создать приложение как Service?

Работа с Service - Программирование Android
Всем добрый вечер! Есть приложение под андроид. С активити, с интерфейсом, всё как нужно. Теперь потребовалось сделать из него фоновое...

SQLite в Service - Программирование Android
Всем привет! Коллеги, возможно ли подключаться к базе и выполнять с ней все действия из Сервиса. Активити у меня нет, в программе 3...

Fragments и service - Программирование Android
такой вопрос как реализовать запуск сервиса и обработку результатов приложении где есть fragments.? хотелось бы запускать сервис в...

App Service - Программирование Android
Возможно ли как-то создать приложение, которое запускает сервис и при этом, если в дальнейшем удалить само приложение, то сервис останется...

SQLite из Service - Программирование Android
Здравствуйте, у меня такой вопрос. Уже бьюсь 2 дня, ни как не могу сделать. Может вы мне поможете советом, а лучше примером. Как...

Автозагрузка Service - Программирование Android
Привет, люди! Давно бьюсь с автозапуском сервисов. Скиньте, пожалуйста РАБОЧИЙ пример сего действа, иначе я вообще никогда так и не...

Работа с сетью в Service - Программирование Android
Здравствуйте. Возник вопрос на который никак не могу найти ответ. В моей программе необходима работа с сетью в фоновом режиме. Графическая...

Принцип работы Service - Программирование Android
Здравствуйте, господа. Не могу понять, что еще может Service, кроме перегружаемых методов? При первом запуске в onStartService или...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Pablito
2452 / 1897 / 590
Регистрация: 12.05.2014
Сообщений: 6,698
Завершенные тесты: 1
21.11.2016, 12:08     Ошибка OutOfMemory в Service #2
раз 8 сек создается ретрофит-адаптер...каждый раз новый
и каждые 8 сек делается запрос, который х.з. успевает ли выполнится за эти 8 сек

сам как думаешь, может закончится память?
OlegJV
102 / 102 / 29
Регистрация: 13.03.2016
Сообщений: 471
21.11.2016, 12:38     Ошибка OutOfMemory в Service #3
Что мешает запустить сервис один раз, а потом передавать в него данные. Через Intent например.
ILNAR_93
Android
219 / 219 / 22
Регистрация: 19.01.2013
Сообщений: 1,656
Записей в блоге: 3
21.11.2016, 12:44  [ТС]     Ошибка OutOfMemory в Service #4
Паблито,
Когда из активности вызывался метод такого не было..

хорошо, понял что лучше будет если адаптер создать где-то выше один раз, а как быть с

Цитата Сообщение от Паблито Посмотреть сообщение
успевает ли выполнится за эти 8 сек

Сейчас я имею:

таймер на 8 секунд и в таймере выполняется следующее

for (int i = o; i<list.size();i++{
RespClass.create(model);
}

Можно обойтись без таймера? чтобы цикл выполнялся последовательно?

Добавлено через 1 минуту
Цитата Сообщение от OlegJV Посмотреть сообщение
Что мешает запустить сервис один раз, а потом передавать в него данные. Через Intent например.
Я не так делаю? Мешает незнание всех методов передачи данных в сервис

Цитата Сообщение от ILNAR_93 Посмотреть сообщение
запускаю Service для актуализации данных в сервисе


Java
1
2
3
4
5
Intent service = new Intent(ctx, find.class);
service.putExtra(Constants.OPEN, false);
service.putExtra(Constants.INFO_TYPE, 1);
service.putExtra(Constants.Serializable_CLASS, response.body().Data);
context.startService(service);
Насколько я знаю сервис создается только 1 раз, а далее уже onCreate не выполняется у сервиса
Yandex
Объявления
21.11.2016, 12:44     Ошибка OutOfMemory в Service
Ответ Создать тему
Опции темы

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