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

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

Войти
Регистрация
Восстановить пароль
 
Sibmax1988
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 121
#1

Один Executor на все приложение - Android

18.11.2016, 13:36. Просмотров 291. Ответов 13
Метки нет (Все метки)

Здравствуйте. Начала изучать андроид и по учебе встала такая задача написать читалку для новостей
все худо бедно пишется но уперся в одном месте
Нужно создать один пул нитей на все приложение.
с Executor раньше не работал поэтому все в новинку.
Хотелось бы получить помощь по этому вопросу.
Скажу сразу что создание публичной статик переменной не катит по указание препода

на вопрос как это все сделать я получил ответ

" класс Application. В onCreate у наследника Application создаёшь пул нитей, далее любая активность, сервис и вообще контекст имеет метод getApplication()."

но в силу своей неопытности не понял что он имеет ввиду
Остается надежда на светлые головы данного форума
Хотелось бы увидеть пример в ввиде кода как это реализуется
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
demixdn
99 / 87 / 21
Регистрация: 31.10.2016
Сообщений: 192
18.11.2016, 20:49     Один Executor на все приложение #2
Он имел в виду, что такие вещь нужно создавать в классе, который наследуется от Application. И потом указать этот класс в манифесте в корне
<application
android:name=".<you_name_ext_Application>" ...

Подробней тут
http://derevyanko.blogspot.com/2010/12/android_26.html
vxg
Модератор
3023 / 1825 / 190
Регистрация: 13.01.2012
Сообщений: 6,918
19.11.2016, 09:00     Один Executor на все приложение #3
непонятно только почему в этом наследнике по условиям задачи нельзя завести статический пулл и что же тогда вместо него хочет препод...
Паблито
2014 / 1756 / 546
Регистрация: 12.05.2014
Сообщений: 6,222
Завершенные тесты: 1
19.11.2016, 11:25     Один Executor на все приложение #4
потому что статические поля не гуд, оно же будет null если приложение достанется из бандла
либо наследник Application либо синглтон какой-нибудь
vxg
Модератор
3023 / 1825 / 190
Регистрация: 13.01.2012
Сообщений: 6,918
19.11.2016, 13:59     Один Executor на все приложение #5
Паблито, я говорил про статическое поле апликэйшн
Паблито
2014 / 1756 / 546
Регистрация: 12.05.2014
Сообщений: 6,222
Завершенные тесты: 1
19.11.2016, 14:06     Один Executor на все приложение #6
я тоже
vxg
Модератор
3023 / 1825 / 190
Регистрация: 13.01.2012
Сообщений: 6,918
19.11.2016, 14:27     Один Executor на все приложение #7
Паблито, если оно нулл значит приложение стартует с нуля после полного останова (убийства всех потоков и всего всего до такой степени что в системе ничего от приложения уже нет) или я не прав?
Паблито
2014 / 1756 / 546
Регистрация: 12.05.2014
Сообщений: 6,222
Завершенные тесты: 1
19.11.2016, 20:32     Один Executor на все приложение #8
лично я уверен на 99% что система может прибить и Application, а потом при надобности восстановит активити из бандла и тогда поле точно будет пустым
но 1% я все же оставлю, вдруг, окажется, что я ошибся
vxg
Модератор
3023 / 1825 / 190
Регистрация: 13.01.2012
Сообщений: 6,918
20.11.2016, 09:50     Один Executor на все приложение #9
Паблито, про активити- вы безусловно правы. я просто говорил про статик поле самого Application - с ним я так понял такого система не вытворяет. разве что речь идет о живущем в Application сервисе который был убит "случайно" и поднят системой обратно так как он стики. но в этом случае вроде все честно - Application должен будет зарыт в могилу на все 100% перед тем как его запустят обратно. если же система прибивает Application без стики-сервисов она его обратно никогда не поднимает вроде
Sibmax1988
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 121
21.11.2016, 06:37  [ТС]     Один Executor на все приложение #10
demixdn, там используется Синглетон по заданию сиглетоны тоже создавать нельзя т к это плохо (забыл об этом написать)
я написал вот так но не работает

Java
1
2
3
4
5
6
7
8
9
<application
            android:allowBackup="false"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:supportsRtl="true"
            android:name=".ExecutorAplication"
            android:theme="@android:style/Theme.Holo.Light" >
        <activity android:name=".ChannelManagementActivity"
                  >
Java
1
2
3
4
5
6
7
8
9
10
11
12
public class ExecutorAplication extends Application {
    private ExecutorService pool;
    @Override
     public void onCreate() {
        super.onCreate();
        pool = Executors.newFixedThreadPool(3);
    }
    ExecutorService getExecutor ()
    {
        return pool;
    }
}
и пытаюсь получить экзекутор
Java
1
getApplication().getExecetor().execute(run);
но не работает
vxg
Модератор
3023 / 1825 / 190
Регистрация: 13.01.2012
Сообщений: 6,918
21.11.2016, 09:10     Один Executor на все приложение #11
Sibmax1988, как именно не работает?
Sibmax1988
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 121
21.11.2016, 09:15  [ТС]     Один Executor на все приложение #12
vxg,
getApplication().getExecetor().execute(run);
нет видит метода getExecutor

Добавлено через 4 минуты
vxg, сработал вот такой вызов
и все удалось ))
пул нитей поднялся и доступен откуда угодно вроде как
((ExecutorApplication) getApplicationContext()).getExecutor().execute(new MyRun(intent));
vxg
Модератор
3023 / 1825 / 190
Регистрация: 13.01.2012
Сообщений: 6,918
21.11.2016, 10:10     Один Executor на все приложение #13
Sibmax1988, логично, ведь у Application не было вашего метода, получить к нему доступ можно только приведя ссылку к вашему классу.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2016, 10:29     Один Executor на все приложение
Еще ссылки по теме:

Android Android-приложение
SVN на один файл Android
Android Не запускается приложение
Android Как адаптировать приложение под все экраны смартфонов?
Многоэкранное приложение Android

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

Или воспользуйтесь поиском по форуму:
Sibmax1988
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 121
21.11.2016, 10:29  [ТС]     Один Executor на все приложение #14
vxg, ну кто бы знал)
Yandex
Объявления
21.11.2016, 10:29     Один Executor на все приложение
Ответ Создать тему
Опции темы

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