Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/18: Рейтинг темы: голосов - 18, средняя оценка - 5.00
qvazar
1 / 1 / 0
Регистрация: 08.12.2010
Сообщений: 37
#1

Выполнение действий по расписанию

13.08.2013, 17:05. Просмотров 3315. Ответов 3
Метки нет (Все метки)

В моей программе пользователь может добавлять различные события и устанавливать время для них. Данные, записанные пользователем, заносятся в БД. На одно время может быть записано несколько событий, в таком случае они должны будут исполнены последовательно друг за другом. Собственно, вопрос - как лучше всего сделать так, чтобы программа выполняла определенные действия по расписанию?
Пока одна из идей - завести переменные, в которые добавлять время ближайших событий из БД, затем создать новый поток и сделать в нем что-то типа будильника, который по наступлению времени ближайшего события будет его выполнять.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2013, 17:05
Ответы с готовыми решениями:

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

Выполнение действий при нажатии на представление в уведомлении
Здравствуйте! Возник следующий вопрос: можно ли на нажатие в уведомлении на...

Получение данных по расписанию
Немного не могу решить, как это реализовать. В общем, при первом запуске...

Запускать будильник по расписанию (Андроид 2.3.4)
Мне надоело устанавливать будильник на мобиле(Fly Blackrird) в ручную Я...

Выполнение действий по расписанию, в определенное время
как сделать что бы прога отслеживала время и если наступило к примеру 21:00...

3
Wenceslaus
Android Developer
130 / 130 / 6
Регистрация: 05.07.2013
Сообщений: 205
14.08.2013, 12:48 #2
Я бы запустил сервис в background'е, который каждые N минут будет просматривать базу на предмет ближайших событий. Если событие произойдёт через M минут (M<N), сервис создаёт Runnable, где описаны все необходимые действия по событию (если необходимо и старт нового потока) и передаёт это в Handler с задержкой M. Важный момент, если пользователь может создать событие, которое произойдёт ранее, чем через N минут, то сервис лучше перезапустить (стерев все Callbacks из Handler'а).
1
qvazar
1 / 1 / 0
Регистрация: 08.12.2010
Сообщений: 37
15.08.2013, 23:05  [ТС] #3
Спасибо за совет, не знал про сервисы, удобная штука оказывается)
Есть еще несколько проблем:
Мое приложение постоянно в отдельном потоке общается по сети с другой программой. Поток создается в главной активности. При переходе пользователем на другие активности он будет продолжать работу?
Когда наступает определенное событие, мне нужно будет оповестить сетевой поток о том, что событие произошло, и передать ему определенные данные. Как лучше это сделать?
0
Wenceslaus
Android Developer
130 / 130 / 6
Регистрация: 05.07.2013
Сообщений: 205
16.08.2013, 12:14 #4
qvazar, если вы запустили поток (неважно где) и он не является демоном (по умолчанию так оно и есть), то поток завершится либо когда он выполнит все свои действия, либо когда его прервут. Посему он будет работать и при переходе на другие активности, и даже после выхода из приложения.
Теперь что касается событий: как таковых оповестителей не предусмотрено. Но вам ничего не мешает сохранить ссылку на поток и вручную, организовав нечто подобное следующему:
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
private int eventType;
private Object data;
 
public void eventObject(int eventType, Object data) {
    this.eventType = eventType;
    this.data = data;
}
 
@Override
public void run() {
    
    while (true) {
    
        // общение по сети с другой программой
        
        if (eventType==someEvent) {
            toDoSomething(data);
        }
        
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            return;
        }
    
    }
 
}
оповещать поток.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.08.2013, 12:14

Выполнение по расписанию.
Уважаемые, возникла не то, чтобы необходимость, но очень хотелось бы данное...

Выполнение задачи по расписанию
Добрый день! Имеется скрипт который выполняет определенную функцию по...

Выполнение действие по расписанию
Есть некая программа, которая должна выполнятся 24/7. Мне нужно выполнить некое...


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

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

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