Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Sibmax1988
3 / 3 / 1
Регистрация: 22.09.2015
Сообщений: 121
#1

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

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

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

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

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

но в силу своей неопытности не понял что он имеет ввиду
Остается надежда на светлые головы данного форума
Хотелось бы увидеть пример в ввиде кода как это реализуется
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2016, 13:36
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Один Executor на все приложение (Программирование Android):

Как сделать приложение под все виды экранов
Здравствуйте уважаемые форумчане! Кто-нибудь может подсказать, как сделать...

Как адаптировать приложение под все экраны смартфонов?
Всем привет! Я новичек в java и начал с самого простого-делаю кликер-игру на...

Как создать независимое приложение и собрать все рабочие файлы в один exe
Уважаемые, кто знает - подскажите! Как создать независимое приложение и собрать...

[Concurrency] Почему Executor не имеет метода, который бы принимал Callable?
Не могу понять это архитектурное решение. У нас есть интерфейс Executor, у...

Скопировать из матрицы в один одномерный массив все положительные элементы, а в другой – все отрицательные
Заполнить с клавиатуры двумерный массив на 20 элементов. Скопировать из него в...

Вставка картинок во все найденные Excel-файлы, попутно объединяя все PDF в один
В общем, в чем проблема. Как сделать, чтоб при запуске программы открывалось...

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

Подробней тут
http://derevyanko.blogspot.com/2010/12/android_26.html
0
vxg
Модератор
3231 / 2034 / 319
Регистрация: 13.01.2012
Сообщений: 7,885
19.11.2016, 09:00 #3
непонятно только почему в этом наследнике по условиям задачи нельзя завести статический пулл и что же тогда вместо него хочет препод...
0
Pablito
2652 / 2134 / 726
Регистрация: 12.05.2014
Сообщений: 7,450
Завершенные тесты: 1
19.11.2016, 11:25 #4
потому что статические поля не гуд, оно же будет null если приложение достанется из бандла
либо наследник Application либо синглтон какой-нибудь
0
vxg
Модератор
3231 / 2034 / 319
Регистрация: 13.01.2012
Сообщений: 7,885
19.11.2016, 13:59 #5
Паблито, я говорил про статическое поле апликэйшн
0
Pablito
2652 / 2134 / 726
Регистрация: 12.05.2014
Сообщений: 7,450
Завершенные тесты: 1
19.11.2016, 14:06 #6
я тоже
0
vxg
Модератор
3231 / 2034 / 319
Регистрация: 13.01.2012
Сообщений: 7,885
19.11.2016, 14:27 #7
Паблито, если оно нулл значит приложение стартует с нуля после полного останова (убийства всех потоков и всего всего до такой степени что в системе ничего от приложения уже нет) или я не прав?
0
Pablito
2652 / 2134 / 726
Регистрация: 12.05.2014
Сообщений: 7,450
Завершенные тесты: 1
19.11.2016, 20:32 #8
лично я уверен на 99% что система может прибить и Application, а потом при надобности восстановит активити из бандла и тогда поле точно будет пустым
но 1% я все же оставлю, вдруг, окажется, что я ошибся
0
vxg
Модератор
3231 / 2034 / 319
Регистрация: 13.01.2012
Сообщений: 7,885
20.11.2016, 09:50 #9
Паблито, про активити- вы безусловно правы. я просто говорил про статик поле самого Application - с ним я так понял такого система не вытворяет. разве что речь идет о живущем в Application сервисе который был убит "случайно" и поднят системой обратно так как он стики. но в этом случае вроде все честно - Application должен будет зарыт в могилу на все 100% перед тем как его запустят обратно. если же система прибивает Application без стики-сервисов она его обратно никогда не поднимает вроде
0
Sibmax1988
3 / 3 / 1
Регистрация: 22.09.2015
Сообщений: 121
21.11.2016, 06:37  [ТС] #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);
но не работает
0
vxg
Модератор
3231 / 2034 / 319
Регистрация: 13.01.2012
Сообщений: 7,885
21.11.2016, 09:10 #11
Sibmax1988, как именно не работает?
0
Sibmax1988
3 / 3 / 1
Регистрация: 22.09.2015
Сообщений: 121
21.11.2016, 09:15  [ТС] #12
vxg,
getApplication().getExecetor().execute(run);
нет видит метода getExecutor

Добавлено через 4 минуты
vxg, сработал вот такой вызов
и все удалось ))
пул нитей поднялся и доступен откуда угодно вроде как
((ExecutorApplication) getApplicationContext()).getExecutor().execute(new MyRun(intent));
0
vxg
Модератор
3231 / 2034 / 319
Регистрация: 13.01.2012
Сообщений: 7,885
21.11.2016, 10:10 #13
Sibmax1988, логично, ведь у Application не было вашего метода, получить к нему доступ можно только приведя ссылку к вашему классу.
0
Sibmax1988
3 / 3 / 1
Регистрация: 22.09.2015
Сообщений: 121
21.11.2016, 10:29  [ТС] #14
vxg, ну кто бы знал)
0
21.11.2016, 10:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2016, 10:29
Привет! Вот еще темы с решениями:

Переписать из исходного массива все элементы, большие пяти в один массив, а все остальные – в другой
Переписать из исходного массива все элементы, большие пяти в один массив, а все...

Как сохранить все wma файлы из папки в один, что бы потом сразу все подгружать?
как сохранить все wma файлы из папки в один, что бы потом сразу все подгружать...

В один стек занести все четные, в другой – все нечетные числа из динамического массива. Подкорректируйте наработки.
//--------------------------------------------------------------------------- ...

Проверить все ли строки матрицы содержат хотя бы один нулевой элемент.Если нет, то заменить все отрицательные
Проверить все ли строки матрицы содержат хотя бы один нулевой элемент.Если нет,...


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

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

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